やりたいこと
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
結構時間がかかります。もっと早くて賢い方法があるはずですが今回は力業。
コメント