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

Php 使用shell脚本将Csv文件上载到数据库显示错误,php,mysql,bash,shell,csv,Php,Mysql,Bash,Shell,Csv,我正在使用脚本上载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"

我正在使用脚本上载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文件):


最好在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')
当IFS=时,读取-r\uc;做
[[$(++i))!=“1”]&&
printf'插入'manufacturemap'('manufacture\u name`)值(\047%s\047)\n'$c'
完成
使用csv文件输出函数:
2014/07/082014/07/08-2014/07/082014/06/08
@Cyrus但我一直收到错误,为什么?我不知道。您的问题缺少脚本的上载部分。@anubhava预期输出?我需要将csv数据转换成表格格式,这样我就可以将c列下的值放到数据库中。是的,这就是预期的输出。你能展示你期望从上面的输入中得到的插入sql吗?我知道,但我应该用一个shell脚本来实现。是的,它确实有帮助,但它也插入到了头名称中。如何排除它?
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')