使用shell脚本上传Csv文件到数据库显示错误


Csv file upload into database using shell script shows error

我正在上传一个csv文件,使用脚本

values ()
{
cat "$@" | '
while IFS=, read  -r a b c d;do 
printf ' %s'n' "$c"
done | '
paste -sd,-
}

使用

插入数据
printf 'INSERT INTO `manufacturemap`(`manufacture_name`)VALUES(%s)'n'     "$(values $_csv_files)" | '
  mysql -u"$_db_user" -p"$_db_password" "$_db"

我得到以下错误

 ERROR 1054 (42S22) at line 1: Unknown column 'c' in 'field list'

我被困在这里好几个小时了,请帮帮我。

输入(csv文件):

    a,b,c,d
1.01100156278101E+15,2014/07/08,2014/07/08,"Cash Withdrawal by Cheque-173320--TT1421957901"
1.01100156278101E+15,2014/07/08,2014/07/08,"Cheque Paid-173261--TT1421951241"
1.01100156278101E+15,2014/07/08,2014/07/08,"Cheque Paid-173298--TT1421951226"
1.01100156278101E+15,2014/06/08,2014/06/08,"Cash Withdrawal by Cheque-173319--TT1421858465"

最好像这样在csv文件上使用awk来生成sql查询:

awk -F, 'NR>1{printf "INSERT INTO `manufacturemap`(`manufacture_name`) VALUES('047%s'047)'n",
          $3}' file.csv
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/07/08')
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/07/08')
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/07/08')
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/06/08')

EDIT:如果不使用awk,您可以这样做:

while IFS=, read -r _ _ c _; do
   [[ $((++i)) != "1" ]] && 
      printf 'INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('047%s'047)'n' "$c"
done < file.csv
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/07/08')
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/07/08')
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/07/08')
INSERT INTO `manufacturemap`(`manufacture_name`) VALUES ('2014/06/08')