gpt4 book ai didi

c# - C Sharp Mysql 批量插入与多次插入查询

转载 作者:行者123 更新时间:2023-11-29 23:28:24 25 4
gpt4 key购买 nike

在一家新公司(架构可能会更改),我有一个表偶尔会从解析的 csv 文件接收批量插入(可能包含重复项的 10k - 200k 行)。最好的方法是什么?

目前我执行以下操作:Insert Into table (Fields) Values (Values) ON DUPLICATE KEY UPDATE Set <Primary Key> = <Primary Key>这花费的时间太长,尤其是当要插入的记录数量增加时。

我知道的两个选项是

1) INSERT INTO table (Fields) VALUES (Values),(Values),(Values)....

担忧:

  • 参数化,我是否必须声明数千个命令参数以避免 SQL 注入(inject)?
  • 重复的键,有没有办法避免在混合中添加重复的主键时命令失败

2) 使用MySqlBulkLoader

担忧:

  • 列映射:根据我的阅读,需要使用与表中相同顺序的字段生成 csv(假设简单的 DESCRIBE tablename 会给我正确的顺序)。由于公司是新成立的,表结构已经改变了。我不想忘记更新代码而损害我的数据完整性。

非常感谢任何帮助。

最佳答案

一种选择是使用LOAD DATA INFILE使用 REPLACE 语法。 REPLACE 语法将使用现有行中主键或唯一索引具有相同值的输入行替换现有行

示例:

LOAD DATA INFILE '/tmp/your_data.csv' REPLACE 
INTO TABLE your_table (column1, column2, ...)

正如您所说,您的数据库架构会经常更改。您可以从配置中读取列列表。这样,当数据库架构发生变化时,您不必更改代码。

关于c# - C Sharp Mysql 批量插入与多次插入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771027/

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