2015-06-06 81 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

謝謝,它的工作原理! –

相關問題