3

CSVデータからMySQLファイルを生成しようとしています

90927744|1356976814398|0|1356976815339|18563182571|18563182571|18568753009|18563574221

awk または sed を使用して、次のように mysql 挿入ステートメントを生成する方法はありますか

insert into table (id,value,status,starttime,endtime,number,phone,number) values (90927744,1356976814398,0,1356976815339,18563182571,18563182571,18568753009,18563574221);

ありがとうございました

4

5 に答える 5

3

入力から特定のフィールドを抽出するには....

$echo "90927744|1356976814398|0|1356976815339|18563182571|18563182571|18568753009|18563574221" |  awk -F "|" '{print $4}'
1356976815339

1 行ある場合a.txt(入力ファイル内の複数行については、以下のスクリプトを参照してください)

$cat a.txt | awk -F "|" '{print $4}'

したがって、必要なクエリを出力するには--

$cat a.txt | awk -F "|" '{printf("insert into table (id,value,status,starttime,endtime,number,phone,number) values (%d, %d, %d, %d, %d, %d, %d, %d) \n", $1, $2, $3, $4, $5, $6, $7, $8)}'

ファイルに複数の行がある場合は、次のスクリプトを使用します (または、これをニーズに合わせて調整します)。

while read line           
do           
     echo "$line" | awk -F "|" ........
done < a.txt
于 2013-05-14T04:21:16.170 に答える
1

上記の AWK ステートメントを改良するために、 while ループの代わりに使用できる

awk -F "|" '{printf("insert into table (id,value,status,starttime,endtime,number,phone,number) values (%d, %d, %d, %d, %d, %d, %d, %d) \n", $1, $2, $3, $4, $5, $6, $7, $8)}' a.txt >> result.txt

これがうまくいくことを願っています

于 2013-12-05T17:57:48.100 に答える
0

質問はすでにかなり古いですが、誰かがそれに落ちるかもしれません...

これを行う別の方法は、CSV ファイルを使用してデータを読み取り、テーブルに挿入できるようにするLOAD DATA 構文で CSV ファイルを読み取る標準的な方法を使用することです。

LOAD DATA INFILE '/tmp/test.csv' INTO TABLE test FIELDS TERMINATED BY '|';

| CSV ファイルからデータを取得し、値を分割します。シンボル。

于 2019-02-07T09:25:46.787 に答える