gpt4 book ai didi

c# - mysql存储过程批量插入

转载 作者:行者123 更新时间:2023-11-29 21:37:17 25 4
gpt4 key购买 nike

我有一个看起来像这样的存储过程:

InsertItem: INSERT INTO (IN itemId INT, name TEXT);

有没有办法可以执行大部分操作?就像而不是执行类似的事情:

using (MySqlConnection connection = new MySqlConnection(_connectionString))
{
connection.Open();
foreach (Item item in GetItems())
{
using (MySqlCommand command = new MySqlCommand("InsertItem", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@itemId", item.ItemId);
command.Parameters.AddWithValue("@name", item.Name);
command.ExecuteNonQuery();
}
}
}

我正在尝试实现看起来像这样的代码,但没有成功:

using (MySqlConnection connection = new MySqlConnection(_connectionString))
{
connection.Open();
using (MySqlCommandBulk command = new MySqlCommand("InsertItem", connection))
{
command.CommandType = CommandType.StoredProcedure;
for (Item item in GetItems())
{
MySqlCommandBulkItem bulkItem = new MySqlCommandBulkItem();
bulkItem["itemId"] = item.ItemId;
bulkItem["name"] = item.Name;
command.BulkItems.Add(bulkItem);
}
command.Execute();
}
}

我的观点是该命令将立即发送所有数据,并且不会单独发送每个查询。
有什么想法吗?

最佳答案

Dotnet 框架的 Oracle 连接器允许使用数组代替参数的标量。但 MySQL 连接器却没有。

有两种方法可以加速 MySQL 中的批量加载。

其中之一适用于 InnoDB 表,但对 MyISAM 表没有帮助。开始交易。然后,每隔几百行后,提交它并开始另一行。这将成批提交表插入,这比单独自动提交它们要快。

另一种是使用MySQL的LOAD DATA INFILE命令来获取数据文件并将其批量插入到数据库中。这非常快,但您必须认真正确地格式化文件。

关于c# - mysql存储过程批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34829095/

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