OracleDB 大量のデータ作成
OracleDB 大量のデータ作成
テーブル作成
CREATE TABLE test( id number(10), name varchar(10), code varchar(5), mail varchar(255) )
ランダムな数値作成
1-9999までの数値 + 浮動小数点を返す。
DBMS_RANDOM.VALUE(1,9999)
結果:1366.243219707729031003322765651467096256
小数点は必要ないのでTRUNCで切ります。
TRUNC(DBMS_RANDOM.VALUE (1, 9999), 0)
ランダムな数値の生成完成。
ランダムな文字列を作成
今回は大文字のアルファベット生成と数字を生成。
第一引数はルールごとに記述が違うのでその都度変更していく。
DBMS_RANDOM.STRING('x', 8) || '@co.jp'
結果:336L0ZGR@co.jp
ランダムな文字列の完成。
参考サイト
データをINSERT
一件のデータを挿入。
INSERT INTO test VALUES ( TRUNC(DBMS_RANDOM.VALUE (1, 9999), 0) , 'test' , DBMS_RANDOM.STRING('x', 5) , DBMS_RANDOM.STRING('x', 8) || '@co.jp' );
ランダムなデータ。
結果: ID:8183 NAME:test CODE:HSABS MAIL:48PQFKAV@co.jp
100件のデータをINSERT
BEGIN FOR i IN 1..100 LOOP INSERT INTO test VALUES ( TRUNC(DBMS_RANDOM.VALUE (1, 9999), 0) , 'test' , DBMS_RANDOM.STRING('x', 5) , DBMS_RANDOM.STRING('x', 8) || '@co.jp' ); END LOOP; END;
エラー発生。
このエラーに1時間ほど悩まされました。
まず考えたのが 3つほど。
- シンプルに記述ミス。
BEGIN END
やFOR LOOP END LOOP
等、閉じる位置が対応していない可能性。- プロシージャ権限関係。
結果的にどれも違いました 笑
でも勉強になったので良かったかな。
解決方法としてはSQLの実行オプションでギャレットの位置を";"→"/"に変更すれば読み込んでくれるようです。(参考サイト
再実行結果
解決方法の参考サイト
A5:SQL Mk-2でストアドプロシージャがエラーになるときの解決方法 | 25歳でフリーランス28歳で起業したエンジニア -じゃけぇ- のあれこれ
助かりました!ありがとうございます。
ショートカットキー
A5の機能についてもっと知っていればエラー解決できたはず。
ツールには慣れていきたいので、今回使った役に立つショートカットキーを残しておきます。
* CTRL + K コメントアウト
* CTRL + SHIFT + K コメントアウト解除
* CTRL + Q SQLの整形
SQLの整形は記述はあってるけど読み込んでくれない時などによく使います。