関連†
- 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/
こうするとわーっとなります。