2つの列に分割された「Frequency.txt」というデータファイルがあります。列1は、IDの対応する列2との繰り返しを示す数字「Frequency」です。
例:-
データ
周波数、ID
32 329
312 330
320 331
132 332
232 334
52 336
42 337
82 338
.. ...
上記のデータはmysqlデータベースの列で更新する必要があります。 100以上の行があり、毎日更新されます。これで、このコマンドを使用して手動で更新しています。
echo ' update table.id_set set 'frequency' = 32 where
ID=329; '|mysql -B -u username -p -h database.com
上記のechoコマンドの「Frequency」と「id」の値を自動的に置き換え、Frequency.txtのすべての既存の行に対してスクリプトを実行するシェルスクリプトを作成する方法
PS:-Frequency.txtの行数は異なります。
答え1
あなたはそれを使用することができますMySQLのインポートまたは直接電話してデータファイルのロードsql文(mysql経由)。
mysqlimportは「固定幅」のデータファイルが好きではありませんが、次のことがわかります。固定幅、スペースで区切られた.txtファイルをmySQLにロードするこれを処理する方法の例です。
はい
この例は以下に依存します。仮説この列はid
テーブルの主キーですid_set
。
LOAD DATA LOCAL INFILE '/some/path/data.txt'
REPLACE INTO TABLE id_set
(@row)
SET frequency = TRIM(SUBSTR(@row,1,7)),
id = TRIM(SUBSTR(@row,8,50))
;
答え2
便利なテストツールはありませんが、mysql
複数のSQL文を受け入れることができる場合:
awk '{print "update table.id_set set frequency = "$1" where id = "$2";"}' < input |
mysql -B -u username -p -h database.com
入力例では、awkコマンドはそれを次のコマンドにmysql
送信します。
update table.id_set set frequency = 32 where id = 329;
update table.id_set set frequency = 312 where id = 330;
update table.id_set set frequency = 320 where id = 331;
update table.id_set set frequency = 132 where id = 332;
update table.id_set set frequency = 232 where id = 334;
update table.id_set set frequency = 52 where id = 336;
update table.id_set set frequency = 42 where id = 337;
update table.id_set set frequency = 82 where id = 338;