gpt4 book ai didi

c# - 如何将 NpgsqlCopyIn 与 NpgsqlCopySerializer 一起使用?

转载 作者:行者123 更新时间:2023-11-29 14:12:20 31 4
gpt4 key购买 nike

如果我理解正确,NpgsqlCopyIn 和 NpgsqlCopySerializer 应该像这样工作:

var conn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["PostgreSqlDb"].ConnectionString);
conn.Open();
var tran = conn.BeginTransaction();
var cmd = new NpgsqlCommand("COPY address (id, employee, value) FROM STDIN", conn);
var npgsqlCopySerializer = new NpgsqlCopySerializer(conn);
var npgsqlCopyIn = new NpgsqlCopyIn(cmd, conn, npgsqlCopySerializer.ToStream);

try
{
npgsqlCopyIn.Start();
npgsqlCopySerializer.AddInt32(300);
npgsqlCopySerializer.AddInt32(1);
npgsqlCopySerializer.AddString("address");
npgsqlCopySerializer.EndRow();
npgsqlCopySerializer.Flush();
npgsqlCopySerializer.AddInt32(301);
npgsqlCopySerializer.AddInt32(1);
npgsqlCopySerializer.AddString("another\r\naddress");
npgsqlCopySerializer.EndRow();
npgsqlCopySerializer.Flush();
npgsqlCopyIn.End();

tran.Commit();
}
//catch (Exception e)
//{
// tran.Rollback();
// throw;
//}
finally
{
conn.Close();
}

问题是每次在 AddString() 中有不允许的字符时,它会在该方法中抛出一个 ArgumentOutOfRangeException,否则它会工作。

例如:

npgsqlCopySerializer.AddString("another\r\naddress");

将抛出异常,因为它包含一个在 copy from text format 中具有特殊含义的换行符(行分隔符)并且应该被转义。

有谁知道我该怎么做才能让它发挥作用?我在 Internet 上搜索示例,但找不到任何内容。

感谢您的帮助!

最佳答案

我是报告错误的人,巧合的是就在几天前。

您介意发布您要插入的 XML 吗?我已经尝试过 OSM 结果: http://nominatim.openstreetmap.org/search.php?q=A7&viewbox=3.96%2C52.82%2C7.93%2C51.11&format=xml

还有一个相当大的 web.config 文件,两者都可以完美运行。因此,要么是我在提交修复时出现了复制/粘贴错误,要么是您尝试插入的 XML 与我尝试插入的 XML 不同。

此外:您是否遇到与之前完全相同的错误(即参数超出范围)?默认缓冲区大小仅为 8k,这对我来说是不够的。

我不知道这是否有任何区别,但我根本没有使用 flush:

NpgsqlConnection Conn = new NpgsqlConnection(getPostgresConnString());
Conn.Open();
NpgsqlCopyIn copyIn = new NpgsqlCopyIn("COPY table (col1,col2,col2) FROM STDIN;", Conn);
copyIn.Start();
NpgsqlCopySerializer cs1 = new NpgsqlCopySerializer(pConn2);
cs1.AddString(System.IO.File.ReadAllText("C:\\test\\Web.config"));
[...]
cs1.EndRow();
cs1.Close();
copyIn.End();

关于c# - 如何将 NpgsqlCopyIn 与 NpgsqlCopySerializer 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11824967/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com