- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
针对大型 PostgreSQL 表运行以下代码,NpgsqlDataReader 对象会阻塞,直到获取所有数据。
NpgsqlCommand cmd = new NpgsqlCommand(strQuery, _conn);
NpgsqlDataReader reader = cmd.ExecuteReader(); // <-- takes 30 seconds
如何让它不预取所有数据?我想逐行遍历结果集,而不是让它一次将所有 15 GB 提取到内存中。
我知道 Npgsql 1.x 中存在此类问题,但我使用的是 2.0。这是针对 XP/Vista/7 上的 PostgreSQL 8.3 数据库。我的连接字符串中也没有任何时髦的“强制 Npgsql 预取”内容。我完全不知道为什么会这样。
最佳答案
我很惊讶驱动程序没有提供执行此操作的方法——但您可以手动执行 SQL 语句来声明一个游标,打开它并从中批量获取。即(这段代码非常可疑,因为我不是 C# 人):
new PgsqlCommand("DECLARE cur_data NO SCROLL CURSOR AS "
+ strQuery, _conn).ExecuteNonQuery();
do {
NpgsqlDataReader reader = new NpgsqlCommand("FETCH 100 FROM cur_data", _conn)
.ExecuteReader();
int rows = 0;
// read data from reader, incrementing "rows" for each row
} while (rows > 0);
new PgsqlCommand("CLOSE cur_data", _conn).ExecuteNonQuery();
注意:
cursor_tuple_fraction
设置可能会导致在通过游标执行查询时使用不同的计划,而不是在立即模式下。您可能想在声明游标之前执行“SET cursor_tuple_fraction=1”,因为您实际上打算获取游标的所有输出。关于.net - 如何阻止 NpgsqlDataReader 阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2983285/
我试图在使用 select 语句后从 NpgsqlDataReader 中获取行数。我尝试检查的原因是在处理数据之前查看它是否有任何数据、单行或者是否有多行。任何帮助将不胜感激。 这是在 C# .NE
我正在计算数据读取器的所有行数,为此我正在这样做: connection = new NpgsqlConnection(CS); connection.Open(); command =
针对大型 PostgreSQL 表运行以下代码,NpgsqlDataReader 对象会阻塞,直到获取所有数据。 NpgsqlCommand cmd = new NpgsqlCommand(strQu
从数据库中读取表列时,我无法区分 NULL 数据库类型和“NULL”文本 示例代码: using (var connection = new NpgsqlConnection("connectionS
.NET 4.5、C#、Npgsql 3.1.0 我有一个检索 Postgis 几何字段的查询 - 我能看到执行此操作的唯一方法是: public class pgRasterChart {
所以我对 PostgreSQL 和 VB.net 相当陌生(刚刚开始阅读)。我已经完成研究并使用 Npgsql.dll 和 Mono.Security.Protocol.Tls.dll 作为连接到数据
我是一名优秀的程序员,十分优秀!