В SQL Server 2016 у меня есть хранимая процедура. В этом СП я хочу, чтобы получить все данные с видом из связанного сервера (PostgreSQL), используя следующее заявление:OPENQUERY: выброс ошибки «Недостаточно памяти»: ограничить строки до тех пор, пока все не будут загружены
INSERT INTO myTable
SELECT Field1,
Field2,
Field3,
...
FROM OPENQUERY(myServer, 'SELECT * FROM myDatabase.mySchema.myView')
Когда я использую его, как это, я получаю следующее сообщение об ошибке после нескольких минут:
Out of memory while reading tuples.
Я изменил SELECT
заявление в OPENQUERY
получить только первые строки, которые 1000000 работали хорошо:
SELECT * FROM myDatabase.mySchema.myView ORDER BY Field1 LIMIT 1000000
Теперь я не уверен, ВГ на самом практическом пути получить все данные. Я мог бы вставить первые 1000000 строк, а затем вставить следующий 1000000, используя OFFSET
. Но я не думаю, что это было бы хорошим решением, поскольку я не знаю, что такое общее количество строк. Цикл будет другим способом, но я действительно не знаю, будет ли это самым простым способом добиться того, чего я хочу.
Любая помощь будет оценена по достоинству.
есть первичный ключ присутствует в вашей точки зрения? –
@MitchWheat Нет, к сожалению, нет первичного ключа и нет уникального столбца в представлении. –