みなさんこんにちは。ヒロウミです。
linuxのシェルスクリプトでcsvを扱ったのでメモっておきます。
まず、CSVのデータを用意。今回は偉人の名言をチョイス。これをSQLのインサート文に変換します。
$ cat proverb_data.csv 'ゲーテ','自分自身を信じてみるだけでいい。きっと、生きる道が見えてくる。' 'バーバラ・ブラハム','たいていの人はほんとうになにがほしいのか、心の中でわかっています。人生の目標を教えてくれるのは直感だけ。ただ、それに耳を傾けない人が多すぎるのです。'
次にこのファイルを引数に受け取るシェルスクリプト。
if文の「-e」はファイルの存在確認。条件を複数指定する時は[条件] || [条件]の様に記述。
$ cat convert_csv_to_sql.sh
#!/bin/bash
#Check params and confirm existence of file.
if [ $# -ne 1 ] || [ ! -e $1 ]; then
echo "Please specify the csv file."
exit 1
fi
#Delete old file.
if [ -e insert_data.sql ]; then
rm insert_data.sql
fi
CSVFILE=$1
#Convert csv to sql.
for LINE in `cat ${CSVFILE} | grep -v ^#`
do
#Set params.
AUTHOR=`echo ${LINE} | cut -d ',' -f 1`
PROVERB=`echo ${LINE} | cut -d ',' -f 2`
#Create sql.
echo "INSERT INTO proverb(author,proverb) VALUES(${AUTHOR},${PROVERB});" >> insert_data.sql
done
参考サイト: