同じテーブルに100kを超えるレコードをコピーし、最初のテーブルに挿入するたびに2番目のテーブルが最初のテーブル挿入ID(プライマリキー)で更新されます。 一括挿入を試みましたが、2番目の表に挿入されるすべての挿入IDを取得できませんでした。 私はMySQL 5.5を使用しています。次のコードを実行すると、ランダムエラーが発生します。MySQLでレコードを一括して挿入するにはどうしたらいいですか?
- クエリ中にMySQLサーバーへの接続が失われました。
- 現在の接続に関連付けられたトランザクションは を完了しましたが、処分されていません。トランザクションは、 の前に処理されなければならず、接続を使用してSQL文を実行できます。
- 順不同のネットパケット:received [x]、expected [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
[email protected];";
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
[email protected],
[email protected];";
cm.CommandText = commandText;
cm.Parameters.AddWithValue("@column1", item.column1);
cm.Parameters.AddWithValue("@column2", item.column2);
cm.ExecuteNonQuery();
}
}
}
一顧、右私の路地まで。唯一の問題は、あなたは昨年から何の答えも受け入れていない。なぜ – Drew
はMySqlがXMLを介してデータを一括してサポートするのを妨げるのですか?データテーブルをXMLに変換し、XMLを入力として取得するストアドプロシージャを作成し、XMLを処理するためにSQLストアドプロシージャコードを作成しますSQL Serverとの時間がわからない場合は、MySqlで同じことが成功したら 'C#Stackoverflow XMLをMySqlデータベースに一括挿入する ' – MethodMan
@MethodMan:はい、MySqlは一括挿入をサポートしていますが、最初のテーブルで更新するので、バルクを使用することはできません。上記のコードでは、TrasactionScopeには他にもたくさんの操作が行われています。しかし、私はあなたの提案された方法を試みます。 – Atulya