SE・プログラミングのあれこれ

【MySQL】ループ処理でデータ大量投入

MySQL

やりたいこと

No.001_name

No.002_name

No.999_name

データベースに上記のような「0埋めされた連番+文字列を大量投入」したい。

やり方

以下のテーブルを作成

ストアドプロシージャを作成

コード解説

同名のプロシージャが存在する場合にそれを削除する

「;」をプロシージャ内で使用するので、デリミタ(終端文字)を「//」に変更。

loop_insertという名前のプロシージャを作成。引数はデータ型も含めて宣言する。

変数宣言。使用する変数は明示的に宣言しなければならない。

ループ処理

lpad(数値, 桁数, 埋める文字) …左に0埋め

concat(文字列, 文字列, …) …文字列を結合

コード解説を閉じる
ストアドプロシージャとは

サーバ上に保存される一連のSQL。SQLにおける関数のようなもの。

似たようなものにストアドファンクションがある。プロシージャには戻り値がなく、ファンクションは戻り値あり。

作成したプロシージャに引数を渡して呼び出す。

データ投入完了。引数に11を指定したのでNo.011_nameまで作成されている。

idcountcount2name
111No.001_name
222No.001_name
111111No.011_name
ポイント
データ型がintのカラム(今回はcount2)には0埋めした数値は記録できない。

0埋めした数値を記録したいときは文字型を利用しましょう。