sql-server - OPENQUERY 抛出 "Out of memory"错误 : limit rows until all are loaded

标签 sql-server postgresql limit sql-server-2016

在 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”,然后在打开的数据源详情中

“选项”部分选择“数据源”

并在打开的窗口中选中“使用声明/获取”。

enter image description here

关于sql-server - OPENQUERY 抛出 "Out of memory"错误 : limit rows until all are loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41393334/

相关文章:

php - 如何使用 PHP 在 SQL Server 中转义字符串?

postgresql - 如何更改 Postgres 表字段名称限制?

php - 强制限制用户 MySQL 查询

SQL 内连接 : ORDER BY LIMIT duplicates from one table

sql-server - 如何减少 10 多个 union select 语句

SQL Server - 在两个方向上遍历树

c# - 用于从 LastOrDefault 父级查找子项的 Entity Framework LINQ

mysql - ActiveRecord::Base SQL 结果对象类型在 MySQL 和 PostgreSQL 中不同

postgresql - jooq 流是异步的吗?

ruby-on-rails - rails : get a specific number of random records