c# - Npgsql C# 多行/值插入

标签 c# postgresql npgsql

我一直在研究 PostGres 多行/值插入,它在纯 SQL 中看起来像这样:

insert into table (col1, col2, col3) values (1,2,3), (4,5,6)....

我想使用它的原因是我有很多数据要插入,这些数据是通过队列到达的,我一次将其批量插入 500/1000 条记录以提高性能。

但是,我一直找不到在 C# 中执行此操作的示例,我能找到的所有内容都是一次只添加一个记录参数,然后执行,这太慢了。

我目前正在使用 Dapper 进行这项工作,但我需要将 SQL 扩展为更新插入(在冲突更新时插入),我发现的所有内容都表明 Dapper 无法处理。我发现了 Postgres 可以在单个 action 中处理更新插入和多值的证据。 .

汤姆

最佳答案

我没有完全正确地回答您的问题。但是对于 Postgresql 中的批量插入,this is a good answer

它给出了将列表(RecordList)中的多条记录插入到表(user_data.part_list)中的示例:

using (var writer = conn.BeginBinaryImport(
"copy user_data.part_list from STDIN (FORMAT BINARY)"))
{
    foreach (var record in RecordList)
    {
        writer.StartRow();
        writer.Write(record.UserId);
        writer.Write(record.Age, NpgsqlTypes.NpgsqlDbType.Integer);
        writer.Write(record.HireDate, NpgsqlTypes.NpgsqlDbType.Date);
    }

    writer.Complete();
}

关于c# - Npgsql C# 多行/值插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657039/

相关文章:

sql - 创建一个表,如果其他表中的某些列发生更改,该表可以自动更新

javascript - 如何通过 JavaScript 将 asp 文本框清空

c# - 在 ASP.NET MVC 中加密 Json 中发送的数据

postgresql - JasperReports 服务器无法在 Tomcat6 上运行 : Cannot create PoolableConnectionFactory

postgresql - 如何使用Windows批处理将postgresql查询的输出循环到变量中

mysql - 数据库中的三列条件

c# - 如何从 Npgsql 异常判断调用是否值得重试( transient 故障策略)

c# - 无法加载文件或程序集 'System.Runtime.CompilerServices.Unsafe'

c# - 方法返回泛型 func c#

C# Covariance puzzle,我遇到过