插入多行的最快方法

Dot*_*NET 7 .net c# mysql sql database

我有一个DataTable包含数十万行的.在我的程序过程中,我向这个DataTable添加了几千行,这些行也需要添加到数据库中.我想尽快插入它们,而不是为每条记录创建一个INSERT语句.MySQL LOAD INTO命令不合适,因为我不想涉及任何外部CSV文件.

到目前为止我所做的是使用a MySqlDataAdapter并仅使用插入更改调用'Update'方法,如下所示:

MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(adapter);
adapter.InsertCommand = commandBuilder.GetInsertCommand();
adapter.Update(myDataTable);
Run Code Online (Sandbox Code Playgroud)

这也运行缓慢,所以我怀疑它们也是一次插入一行.我有什么选择?构建一个包含其中所有值的长INSERT语句,唯一的方法是什么?

Abh*_*rma 6

插入这样的值: -

INSERT INTO tbl_name
    (a,b,c)
VALUES
    (1,2,3),
    (4,5,6),
    (7,8,9);
Run Code Online (Sandbox Code Playgroud)

要优化插入速度,请将许多小型操作组合到一个大型操作中.


myb*_*ame 2

我看到的唯一解决方案是:

1)将DataTable转换为csv->你可以google一下。

2)将其保存在服务器端的临时目录中。

3)使用MySqlBulkLoader此处是有关它的文章的链接。加载临时目录中保存的文件。

4) 之后从临时目录中删除该文件。