如何在MySQL中批量插入记录?

阿图利亚

我必须在同一张表中复制超过100k条记录,并且在第一张表中的每一行插入后,第二张表将使用第一张表插入ID(主键)进行更新。我尝试进行批量插入,但是随后我无法获得将插入第二个表中的所有插入的ID。我正在使用MySQL 5.5。当我运行以下代码时,出现以下随机错误:

  1. 查询期间失去与MySQL服务器的连接。
  2. 与当前连接关联的事务已完成,但尚未处理。必须先处理事务,然后才能使用该连接执行SQL语句。
  3. 净数据包乱序:已接收[x],应为[y]。

如何最佳地插入这些记录?

CODE;

foreach (var item in transactions)
{
    int transactionId;
    using (MySqlCommand cm = DM.ConnectionManager.Conn.CreateCommand())
    {
        cm.CommandType = System.Data.CommandType.Text;
        var commandText = @"INSERT INTO FirstTable SET 
                        column1=@column1;";
        cm.CommandText = commandText;
        cm.Parameters.AddWithValue("@column1", item.column1);

        cm.ExecuteNonQuery();

        transactionId = (int)cm.InsertId;
    }

    foreach (var item in item.TransactionDetails)
    {
        using (MySqlCommand cm = DM.ConnectionManager.Conn.CreateCommand())
        {
            cm.CommandType = System.Data.CommandType.Text;
            var commandText = @"INSERT INTO SecondTable SET 
                        column1=@column1,
                        column2=@column2;";
            cm.CommandText = commandText;
            cm.Parameters.AddWithValue("@column1", item.column1);
            cm.Parameters.AddWithValue("@column2", item.column2);

            cm.ExecuteNonQuery();

        }
    }
}
巴里

导入到MySQL的最快方法是INFILE,因此我建议制作一个CSV文件,然后将以下内容作为SQL语句运行。请注意,我还没有完整的C#安装程序并对此进行了测试...但是这是我想快速完成MySQL备份/还原的方式...所以我假设当设置为“ commandText”时可以运行以下命令”,然后在创建CSV文件并将其写入磁盘后运行。

LOAD DATA LOCAL INFILE 'import.csv' INTO TABLE MyTable FIELDS TERMINATED BY ','
  ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
    (Col1,Col2,Col3);

来自https://dev.mysql.com/doc/refman/5.7/en/load-data.html “ LOAD DATA INFILE语句以非常高的速度将文本文件中的行读取到表中……”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Oracle中批量插入

来自分类Dev

如何在MySQL中插入多个记录/行

来自分类Dev

如果记录不存在,如何在mysql中插入?

来自分类Dev

如何在Mercurial中批量重写历史记录

来自分类Dev

Django:如何在事务中包装批量更新/插入操作?

来自分类Dev

VBA如何在SQL批量语法中插入动态参数

来自分类Dev

批量插入数据时如何在Cassandra中给出ttl?

来自分类Dev

如何在MySQL中插入“ /”

来自分类Dev

如果触发器中存在条件,如何在MySQL表中插入记录

来自分类Dev

如果触发器中存在条件,如何在MySQL表中插入记录

来自分类Dev

如何在多个记录插入中获取最后插入的ID?

来自分类Dev

如何在PHP中使用HTML表单在MySQL中插入记录

来自分类Dev

如何使用cqlengine在cassandra中批量插入/批量插入?

来自分类Dev

如何在MySQL中删除“重复”记录?

来自分类Dev

如何在MySQL中检索重复的记录

来自分类Dev

如何在MySQL中检查以前的记录?

来自分类Dev

如何在mysql中查询不同的记录

来自分类Dev

如何在MySQL中按月获取记录?

来自分类Dev

如何在MySQL中插入Date?

来自分类Dev

如何在MySQL中插入长号

来自分类Dev

如何在mysql中插入日期

来自分类Dev

如何在MySql DB中将Shell脚本用于批量插入/更新图像

来自分类Dev

如何在一个查询中插入多个记录?

来自分类Dev

如何在Redis中插入一批记录

来自分类Dev

如何在laravel控制器中插入多个记录

来自分类Dev

如何在node-pg-migrate迁移中插入记录?

来自分类Dev

如何在表中插入更新和删除记录

来自分类Dev

如何在symfony1.4中获取最后插入的记录

来自分类Dev

如何在mongodb中自动插入记录(nodejs,express,mongoose)

Related 相关文章

热门标签

归档