我正在使用C#Npgsql并尝试使用COPY命令从Postgres导出数据。以下查询将返回100多行。我想使用while循环读取结果,就像使用NpgsqlDataReader一样。
当我尝试获得第二行结果时,http://www.npgsql.org/doc/copy.html上的文档不断出现错误(第二个StartRow())。注意:运行第二个StartRow()会返回以下错误消息:
An unhandled exception of type 'Npgsql.NpgsqlException' occurred in mscorlib.dll
Additional information: Unknown message code: 0
using (NpgsqlBinaryExporter reader = conn.BeginBinaryExport("COPY tableName(colONE, colTWO) TO STDOUT (FORMAT BINARY)"))
{
reader.StartRow();
Console.WriteLine(reader.Read<string>());
Console.WriteLine(reader.Read<int>(NpgsqlDbType.Smallint));
reader.StartRow(); //### <== ERROR HERE ###
Console.WriteLine(reader.Read<string>());
Console.WriteLine(reader.Read<int>(NpgsqlDbType.Smallint));
}
如何读取WHILE循环中的所有行或一次输出?
如果我正确理解了这个问题,这样的事情可能有所帮助
using (NpgsqlBinaryExporter reader = conn.BeginBinaryExport("COPY tableName(colONE, colTWO) TO STDOUT (FORMAT BINARY)"))
{
while(reader.StartRow() > 0)
{
Console.WriteLine(reader.Read<string>());
Console.WriteLine(reader.Read<int>(NpgsqlDbType.Smallint));
}
}
这应该读取表中的所有数据,它解决了我的类似问题。我仍然在寻找提高性能的方法,所以如果您有任何想法,请告诉我。