シェルスクリプト練習 -MySQLのテストDBにランダムに生成したデータを入れる-
しばらくぶりの更新になります。
ずっとCCNAの模擬試験問題の解答をしていてLinux・MySQLの勉強がそっちのけになっていました。
今回はシェルスクリプトでMySQLのテーブルにランダムに生成したデータをINSERTしてみたのでその備忘録に。
前回のMySQLの勉強ではiTunesのライブラリを一つ一つ手入力していました。
コマンドの練習にはなったのですが、単純に物量が多くて全部入力するのに4日かけてました。
これは勉強するうえで非効率すぎるし、踏み込んだ勉強にならないと思いました。
そこで今回のシェルスクリプト作成。
以下のページを参考にしました。
memorycraft: シェルってなんじゃ?(mysqlに簡単ランダムデータ生成)
テスト用DB・テーブル作成
以前作ったiTunesライブラリとは別に「test_user」DBに[user]テーブルを作成。
>create table test_user; >use test_user; >create table user( ->id int(11) not null auto_increment, ->name varchar(30), ->age int(11), ->pass varchar(50), ->created_date datetime, ->primary key(id));
これでランダムなデータを入力する先ができました。
シェルスクリプト作成
CentOSのコンソールに戻って「insert_user.sh」スクリプトを作成。
vi insert_user.sh
viでスクリプトの中身を作りました。
#!/bin/sh while((1)) do name=$(uuidgen | tr -d '-' | cut -c 1-10) #「uuidgen」コマンドで10桁のハイフンなしIDを出力 pass=$(uuidgen) #uuidgenでランダムにIDを出力 age=`expr 1 + $RANDOM % 100` #「expr」コマンドで1から100までの乱数を出力 mysql -u [USER] test_user -pPASSWORD -e "insert into user (name,age,pass,created_date) values ('${name}',${age},'${pass}',NOW());" #MySQLに[USER]・PASSWORDでログインし、「test_user」の「user」テーブルに各ランダムな値をINSERT echo -n "." #INSERT時に「.」を出力 exit 1
あとはシェルの実行。
sh ./insert_user.sh
すごい勢いで「.」が表示されていました。
(※セキュリティ上問題ある風なメッセージも一緒にすごい勢いで表示されてましたが)
「たぶんこのスクリプトは永遠に続くな」と確信したのでCtrl+Cで強制終了。
その後、MySQLでテーブルを確認してみると。
スクリプト実行から強制終了までは1分にも満たなかったはずですが、すごい量のデータが挿入されてました。
今回はここまで。