Postgre COPY BeginBinaryExport运行时

问题描述 投票:0回答:1

我正在使用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循环中的所有行或一次输出?

c# postgresql npgsql
1个回答
0
投票

如果我正确理解了这个问题,这样的事情可能有所帮助

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));
            }
        }

这应该读取表中的所有数据,它解决了我的类似问题。我仍然在寻找提高性能的方法,所以如果您有任何想法,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.