在 SQL Server 2016 中,我有一个存储过程。在此 SP 中,我想通过使用以下语句从链接服务器 (PostgreSQL) 的 View 中获取所有数据:
INSERT INTO myTable
SELECT Field1,
Field2,
Field3,
...
FROM OPENQUERY(myServer, 'SELECT * FROM myDatabase.mySchema.myView')
当我这样使用它时,几分钟后我收到以下错误消息:
Out of memory while reading tuples.
我更改了 OPENQUERY
中的 SELECT
语句,只获取前 1000000 行,效果很好:
SELECT * FROM myDatabase.mySchema.myView ORDER BY Field1 LIMIT 1000000
现在我不确定获取所有数据的最实用方法是什么。我可以插入前 1000000 行,然后使用 OFFSET
插入下 1000000 行。但我认为这不是一个很好的解决方案,因为我不知道总行数是多少。循环是另一种方式,但我真的不知道这是否是实现我想要的最简单的方式。
如有任何帮助,我们将不胜感激。
最佳答案
我认为您正在使用 odbc 驱动程序创建链接服务器。这是 psqlODBC 驱动程序内存配置的问题。
您更改 odbc 驱动程序设置以打开您的数据源
点击“Configure”,然后在打开的数据源详情中
“选项”部分选择“数据源”
并在打开的窗口中选中“使用声明/获取”。
关于sql-server - OPENQUERY 抛出 "Out of memory"错误 : limit rows until all are loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41393334/