My SQLで以下のテーブルに10万件のテストデータを入れたいと思っているのですが、どのようなクエリで10万件のレコードを挿入する事が可能でしょうか?
以下、テーブル名、カラム名になり、プライマリーキーはオートインクリメントになっています。
よろしくお願いします。
テーブル名:sample
カラム1:id
カラム2:id_number
カラム3:status
カラム4:create_add
カラム5:creator
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
まず、データベースにテーブルを作成してください。
次に、テストデータをインポートしますが、その前に、インポートするためにテストデータを整形します。
- データベースの1レコードをタブ区切りで1行にまとめる。
- その際、作成したテーブルのカラムと同じ順番で並べる。
- 改行コードを全て揃える。(例えばCRLF)
例えば、テストデータは次のような形式になります。
id\tid_number\tstatus\tcreate_add\tcreator改行 id\tid_number\tstatus\tcreate_add\tcreator改行 id\tid_number\tstatus\tcreate_add\tcreator改行
区切り文字はタブでなくてもいいですが、テストデータに含まれない文字を区切り字としてください。
ちなみに、タブを\tと書いていますが、特殊文字なのでそのまま\tとは書かないでください。タブを入力したら、見た目は空白ができます。
そして、次のSQLを実行します。
SQL
1load data infile "テストデータのパス" into table データベース名.sample 2 fields terminated by '\t' lines terminated by '\r\n'; 3
テストデータを整形した時とは異なり、SQLにはタブを\t、改行コードを\r\nと書いて指定します。
SQLを実行したら、インポートが始まります。
10万件だと少し時間がかかると思うので、少々お待ちください。
投稿2016/01/11 07:59
編集2016/01/11 08:03総合スコア1409
0
idがPKの場合、下記の形はいかがでしょうか。
それぞれのカラム分の疑似テーブルを作成し、cross joinした結果(25☓20☓20☓10=100,000件)をInsertしています。
SQL
1insert into sample(id_number,status,create_add,creator) 2select 3 a.id_number, 4 b.status, 5 c.create_add, 6 d.creator 7from ( 8 select 1 as id_number union all 9 select 2 as id_number union all 10 select 3 as id_number union all 11 ・・・ 12 select 25 as id_number 13) a 14cross join ( 15 select 1 as status union all 16 select 2 as status union all 17 ・・・ 18 select 20 as status 19) b 20cross join ( 21 select 1 as create_add union all 22 select 2 as create_add union all 23 ・・・ 24 select 20 as create_add 25) c 26cross join ( 27 select 1 as creator union all 28 select 2 as creator union all 29 ・・・ 30 select 10 as creator 31) d 32;
投稿2016/01/15 03:45
編集2016/01/15 05:48総合スコア10
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
10万件のテストデータなら、プログラムしかないようです。まずはそのテストデータはどのような存在でしょうか?excelとか、ファイルとか、どっちもいい。
例えば、javaを使って、ファイルなら,まずはFileInputStreamでデータを導入、そして、データベースに接続(具体的なコードはjava.sql.*を参考しましょう)、やりたいのSQLをStatement.executeにすればいい。excelなら、専用のApache POIを使いましょう
投稿2016/01/11 05:24
総合スコア60
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/11 08:18
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。