15

挿入したいデータがたくさんあるので、mysql に一括挿入を使用することにしました。

友人 (リクエスタ、バディ) 値 (値 1、値 2)、(値 2、値 1)、(値 3、値 4)、(値 4、値 3)、... に挿入します。

私は次のことを知りたいです:

1) 無視できますか? 例えば

友達 (リクエスター、バディ) 値 (値 1、値 2)、(値 2、値 1)、(値 3、値 4)、(値 4、値 3)、... に無視を挿入します。

重複した場合はどうなりますか? a)すべてを挿入しませんか?b) 重複レコードの前にレコードを挿入し、その後データの処理を停止しますか? c) 重複を無視して、残りを続行しますか?

2)数に制限はありますか?このような一括挿入に使用できるレコードの数は?

ありがとうございました。

4

2 に答える 2

24

はい、「無視」キーワードを使用できます。重複したエラーは単純に無視されます。可能なすべての行を挿入し、重複につながる行をスキップします (データの処理は停止しません)。次のようにすると (最初の列が主キーであると仮定します):

無視を c 値 (1,1)、(2,2)、(3,3)、(3,5)、(4,5) に挿入します。

これは、(3,3) が挿入され、(3,5) が挿入されないことを意味します。(3,5) 以外のすべてが挿入されます (新しいテーブルを想定)。

おそらく厳密な制限はありませんが、テストを行って、ニーズに基づいてどこに線を引くべきかを確認することをお勧めします。

編集: MySQL には、SQL クエリのサイズに設定可能な制限があり、デフォルトは 1MB のようです。詳細: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_query_cache_limit

于 2009-08-15T15:15:11.100 に答える
7

また、INSERT クエリで使用できる行数は 50,000 行に制限されています。

于 2009-08-16T13:17:25.287 に答える