2011-07-12 212 views
0

我有三個字段(長度,高度,寬度)的csv文件。我想逐行讀取這些值並更新database.how中的這些值逐行讀取文件並更新數據庫中的這些值。在shell腳本中,如何逐行讀取csv文件並獲取值

我們可以使用「load In file」查詢將整個文件更新到db.but我想更新從csv到db.so的修改值如何逐行讀取文件並更新這些值。

+2

最明顯的答案是不要」不要在shell中執行它,只需使用適當的csv閱讀庫的語言。它會更快,不太可能打破有趣的CSV格式。 –

回答

3

正如道格拉斯在評論中所說,使用sh解析CSV是一個非可擴展的計劃。如果輸入文件不重要,它將不起作用。但是,對於簡單的輸入,您只需要設置IFS。這裏的讀取,並試圖將數據放到一個MySQL數據庫爲例(我沒有測試SQL ...語法可能是(可能是)關閉):

 
#!/bin/sh 
IFS=, 

while read one two three; do 
    echo "insert into table(col1, col2, col3) "' 
     '"values ('$one', '$two', '$three');" 
done | 
mysql db; 
+0

對於數值(長度,寬度,高度),您可能不需要引用VALUES列表中的值。但是,最初的討論還提到了'更新',但是您還需要一種方法來標識要更新的行,這是一種麻煩,因爲不清楚該文件是否包含該信息。 –