- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- シェル/MySQLにtsvデータをロードする へ行く。
- 1 (2011-10-07 (金) 02:43:11)
- 2 (2011-10-07 (金) 02:43:59)
関連†
- シェル
- 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/
こうするとわーっとなります。