Tech Karte::

できることをひとつずつ。

シェルスクリプト練習 -MySQLのテストDBにランダムに生成したデータを入れる-

しばらくぶりの更新になります。
ずっとCCNAの模擬試験問題の解答をしていてLinuxMySQLの勉強がそっちのけになっていました。

今回はシェルスクリプト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でテーブルを確認してみると。
f:id:k-matsuda0901:20160610163525p:plain


スクリプト実行から強制終了までは1分にも満たなかったはずですが、すごい量のデータが挿入されてました。
今回はここまで。

夏に弱いAuthor、二郎系ラーメンが大好きです。
夏バテ予防に先日も食べてきました。
https://www.instagram.com/p/BGZBX2Qklkm/