2015-06-06 62 views
0

我使用的脚本CSV文件上传到数据库中使用shell脚本

export IFS="," 
cat $_csv_files | read a b c d; 

现在我需要在列Ç csv文件的值插入列manufacture_name上传CSV文件的表制造图在我的Database.How我会做到这一点?

,当我试图下面

mysql -u $_db_user -p$_db_password $_db << eof 
    INSERT INTO \`manufacturemap\` 
    (\`manufacture_name\`) VALUES ($c) 
eof 

的代码我得到:

ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1 

我已经困在这里过去几个小时内,请大家帮帮我。

输入(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

请照顾好你的问题 - 脚本你所展现的是语法不正确(缺少'do' )并且什么都不做。目前还不清楚正在读取(和丢弃)的变量与下一个代码块中的变量之间的关系。另外,你的MySQL命令从底部遗漏了'eof'。对我们来说,确切知道你所尝试过的东西是非常重要的,这样我们就可以区分原始代码中的错误和将错误复制到问题中的错误。 –

+0

@Tom我对shell脚本非常陌生,对此我一无所知:(我应该提供哪些更多的信息? –

+0

目前你的问题没有意义,例如,你说你正在使用脚本来上传一个csv,然后显示一个脚本,它设置了一些变量但是什么都不做,向我们展示你的输入是什么样的,并且尽可能清楚地解释你想如何将它插入你的数据库。 –

回答

1

试试这个:

#! /bin/sh 

values() 
{ 
    cat "[email protected]" | \ 
    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" 
+0

谢谢,它的工作原理! –

相关问题