質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

5343閲覧

My SQLで一つのテーブルに10万件のテストデータを挿入したい。

logic_xxx

総合スコア13

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2016/01/11 05:03

My SQLで以下のテーブルに10万件のテストデータを入れたいと思っているのですが、どのようなクエリで10万件のレコードを挿入する事が可能でしょうか?
以下、テーブル名、カラム名になり、プライマリーキーはオートインクリメントになっています。
よろしくお願いします。
テーブル名:sample
カラム1:id
カラム2:id_number
カラム3:status
カラム4:create_add
カラム5:creator

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
coba-coba

総合スコア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
a_m

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

10万件のテストデータなら、プログラムしかないようです。まずはそのテストデータはどのような存在でしょうか?excelとか、ファイルとか、どっちもいい。
例えば、javaを使って、ファイルなら,まずはFileInputStreamでデータを導入、そして、データベースに接続(具体的なコードはjava.sql.*を参考しましょう)、やりたいのSQLをStatement.executeにすればいい。excelなら、専用のApache POIを使いましょう

投稿2016/01/11 05:24

GikgeStephano

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

logic_xxx

2016/01/11 06:27

質問の仕方がよくなかったかもしれません。テストデータはMYSQL内に10万件のレコードを挿入したいという形になります。なのでテストデータの存在はエクセルなどではないです。 それとも一件ずつインサート文を発行するしかなく、一回、または数回のクエリで10万件のデータを挿入するというのは不可能なのでしょうか? 初心者で意味が伝わりずらいかもしれませんが、申し訳ありません。
GikgeStephano

2016/01/11 08:18

そのテストデータは電子版ではなければ、一件ずつインサートしかない。 電子版なら、プログラムで解決できるはずです。 そして,テストデータなら、ランダムのことを求めますか?それはプログラムできるのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問