関連†
- sh
- MySQL
概要†
テストでデータをこちょこちょ触るのが面倒だったので作りました。
要件は以下。
- データはtsvファイル
- 該当テーブルのレコードを全削除してデータをロードする
制限事項は以下。
- データはひとつのディレクトリにまとめて置く
- データのファイル名は「*.dat」
スクリプト†
- reset.sh
#!/bin/sh
directory=`./abstpath.sh $1`
if [ ! -d ${directory} ]
then
echo "the directory does not exist."
exit
fi
files=`find ${directory} -maxdepth 1 -name "*.dat"`
for file in ${files}
do
table=`basename ${file} .dat`
mysql -u<ユーザ> -p<パスワード> <データベース> -e "DELETE FROM ${table};"
mysql -u<ユーザ> -p<パスワード> <データベース> -e "LOAD DATA LOCAL INFILE '${file}' INTO TABLE ${table} FIELDS TERMINATED BY '\t';"
echo "${table} < ${file}"
done
- abstpath.sh
#!/bin/sh echo $(cd $(dirname $0) && pwd)/$1
操作手順†
┣ reset.sh ┗ data/ ┣ hoge.dat ┗ moge.dat
こんなディレクトリ構成になっているとして、
$ ./reset.sh data/
こうするとわーっとなります。