やりたいこと
CSVデータをSQLサーバーにまとめて登録したい。
- データベース名:DB_HOGE
- テーブル名:TB_HOGE
- カラムはYDT,temp,humid,press,batt
- YDTは日時、それ以外はfloat(当然CSV側と一致していること)
- CSVデータ(ファイル)はtestdata.csvとする
やりかた
$emacs csv2sql.sh
#!/bin/bash
SCRIPT_DIR=`dirname $0`
cd $SCRIPT_DIR
SQLFILE="/home/hoge/mysql.conf"
while read line
do
YDT="'"$(echo ${line} | cut -d , -f 1)"'"
TEMP=$(echo ${line} | cut -d , -f 2)
HUMID=$(echo ${line} | cut -d , -f 3)
PRESS=$(echo ${line} | cut -d , -f 4)
BAT=$(echo ${line} | cut -d , -f 5)
CMD_MYSQL="mariadb --defaults-extra-file=$SQLFILE"
QUERY="INSERT INTO DB_HOGE.TB_HOGE (YDT,temp,humid,press,batt) VALUES(${YDT},${TEMP},${HUMID},${PRESS},${BAT});"
echo ${QUERY} | ${CMD_MYSQL}
done <$1
$chmod 777 csv2sql.sh $sudo ./csv2sql.sh testdata.csv
注意
mysql.confの内容は以下のようにしておくこと。(SQLサーバーのIDとパスワード)
[client] user = hoge password = hoge_password
結構時間がかかります。もっと早くて賢い方法があるはずですが今回は力業。
コメント