Created
December 23, 2014 23:12
-
-
Save yujiod/857a07a8059085e3e512 to your computer and use it in GitHub Desktop.
ダミーデータを挿入するシェルスクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# MySQLの接続先 | |
MYSQL_ID='root' | |
MYSQL_HOST='localhost' | |
MYSQL_SCHEMA='redmine' | |
# ユーザーのテーブル定義 | |
TABLE_USER_FROM='users' | |
TABLE_USER_FROM_ID='id' | |
# 元とするテーブル定義 | |
TABLE_FROM='users' | |
TABLE_FROM_ID='id' | |
# 格納先のテーブル | |
TABLE_TO='diary_comments' | |
# ユーザーのIDの最大値を得る | |
USER_MAX_ID=`mysql $MYSQL_SCHEMA -N -u$MYSQL_ID -p -e "select max($TABLE_USER_FROM_ID) from $TABLE_USER_FROM\G"|tail -n 1` | |
# 元とするテーブルのIDの最大値を得る | |
MAX_ID=`mysql $MYSQL_SCHEMA -N -u$MYSQL_ID -p -e "select max($TABLE_FROM_ID) from $TABLE_FROM\G"|tail -n 1` | |
# SQL文 | |
SQL="insert into $TABLE_TO values " | |
# ランダムな文章を生成する元の文字列 | |
LOREM_IPSUM="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." | |
# IDの最大値でループ | |
for i in `seq 1 $MAX_ID` ; do | |
# 内容を挿入するランダムな回数でループ | |
RAND=`expr $RANDOM % 20` | |
# 回数が0の場合はcontinue | |
if [ "$RAND" == "0" ] ; then | |
continue | |
fi | |
for j in `seq 0 $RAND` ; do | |
# 作成者のID | |
AUTHOR=`expr $RANDOM % $USER_MAX_ID + 1` | |
# ランダムな短い文字列を生成 | |
SHORT_STRING='' | |
for k in `seq 1 10` ; do | |
RAND=`expr $RANDOM % 69 + 1` | |
WORD=`echo $LOREM_IPSUM | cut -d " " -f $RAND` | |
SHORT_STRING="$SHORT_STRING $WORD" | |
done | |
# 行頭のホワイトスペースを除去 | |
SHORT_STRING=`echo $SHORT_STRING | sed -e 's/^ +//'` | |
# ランダムな長い文字列を生成 | |
LONG_STRING='' | |
for k in `seq 1 30` ; do | |
RAND=`expr $RANDOM % 69 + 1` | |
WORD=`echo $LOREM_IPSUM | cut -d " " -f $RAND` | |
LONG_STRING="$LONG_STRING $WORD" | |
done | |
# 行頭のホワイトスペースを除去 | |
LONG_STRING=`echo $LONG_STRING | sed -e 's/^ +//'` | |
# INSERTする値を追加、カラムに変更がある場合は追加する | |
SQL="$SQL ($i, '$SHORT_STRING', '$LONG_STRING', $AUTHOR)," | |
done | |
done | |
# 最後のカンマをセミコロンに置換しSQL文として出力 | |
echo $SQL | sed -e "s/,$/;/" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# MySQLの接続先 | |
MYSQL_ID='root' | |
MYSQL_HOST='localhost' | |
MYSQL_SCHEMA='redmine' | |
# 元とするテーブル定義 | |
TABLE_FROM='users' | |
TABLE_FROM_ID='id' | |
# 格納先のテーブル | |
TABLE_TO='user_relations' | |
# IDの最大値を得る | |
MAX_ID=`mysql $MYSQL_SCHEMA -N -u$MYSQL_ID -p -e "select max($TABLE_FROM_ID) from $TABLE_FROM\G"|tail -n 1` | |
# SQL文 | |
SQL="insert into $TABLE_TO values " | |
# IDの最大値で入れ子ループ | |
for i in `seq 1 $MAX_ID` ; do | |
for j in `seq 1 $MAX_ID` ; do | |
# IDが自分自身の場合はcontinue | |
if [ "$i" == "$j" ] ; then | |
continue | |
fi | |
# 友達としない場合はcontinue | |
IS_FRIEND=`expr $RANDOM % 3 - 1` | |
if [ "$IS_FRIEND" == "-1" ] ; then | |
continue | |
fi | |
# INSERTする値を追加、カラムに変更がある場合は追加する | |
SQL="$SQL ($i, $j, $IS_FRIEND)," | |
done | |
done | |
# 最後のカンマをセミコロンに置換しSQL文として出力 | |
echo $SQL | sed -e "s/,$/;/" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment