我使用脚本上传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"
答案 0 :(得分:2)
最好在你的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')
编辑:要做到这一点,没有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')