2011-07-12 17 views
0

3つのフィールド(長さ、高さ、幅)を持つcsvファイルがあります。これらの値を1行ずつ読み込み、これらの値をdatabase.how行ごとにファイルを読み込み、これらの値をデータベースで更新します。シェルスクリプトでcsvファイルを1行ずつ読み込んで値を取得する方法

ファイル全体をdb.butに更新するために "load in file"クエリを使用することができます。変更された値をcsvからdb.soに更新してファイルを1行ずつ読み込み、これらの値を更新します。

+2

最も明白な答えはドンは」それをシェルで行うのは、適切なCSV読み込みライブラリを持つ言語で行います。興味深いcsv形式の方が速く、中断しにくいでしょう。 –

答えて

3

ダグラスはコメントの中で、shを使ってCSVを解析すると、スケーラブルではないことが分かりました。入力ファイルが些細なものであれば、それは動作しません。しかし、簡単な入力のためには、IFSを設定するだけです。ここでは(構文はオフ(おそらく)とすることができる...私はSQLをテストしていない)を読み取ると、MySQLデータベースにデータを入れしようとする例を示します

 
#!/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リストの値を引用する必要はないでしょう。しかし、最初の議論では「更新」についても触れましたが、更新する行を特定する方法が必要です。ファイルにその情報が含まれているかどうかが不明なため、迷惑です。 –

関連する問題