2012-05-21 17 views
8

データベースにテーブルがあり、ローカルファイルに対してオフラインになっているカラムを更新したいと思います。ファイル自体は、2つの列MySQLテーブルをローカルファイルから更新する

  1. テーブルにID列に対応するID、および
  2. 実際の値を有しています。

私は

LOAD DATA INFILE 'file.txt' INTO TABLE table 
    FIELDS TERMINATED BY ',' 

を使用して新しい行を作成することができました。しかし、私は、特にファイルにID列がに結合されるように値を挿入することができますかわかりませんテーブル内のID列。誰かがSQL構文を助けることができますか?

答えて

9

一時テーブルにデータをロードしてからINSERT ... SELECT ... ON DUPLICATE KEY UPDATEを使用することをお勧めします。例えば:あなたはすでにあなたが何ができるか... IDと実際の値を持っているだけでなく、テーブル名を知っているので

CREATE TEMPORARY TABLE temptable (
    id INT UNSIGNED NOT NULL, 
    val INT, 
    PRIMARY KEY (id) 
) ENGINE = MEMORY; 

LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO temptable FIELDS TERMINATED BY ','; 

INSERT INTO my_table 
SELECT id, val FROM temptable 
ON DUPLICATE KEY UPDATE val = VALUES(val); 

DROP TEMPORARY TABLE temptable; 
6

もう一つの方法は、直接書き込む... ...

可能性があり

update mytable set value_col = value where ID_col = ID; 

Second Update Statement 

Third Update statement 

....... 

のようなファイルのステートメントの更新は、updatescript.sql、同じよう*.sqlとしてファイルを保存し

mysql -h <hostname> -u root -p <your_db_name> < "E:/scripts/sql/updatescript.sql" 
0123のように、直接そのスクリプトを実行します
0

それは行の数に依存します 数百になっている場合は、更新列のスクリプトを作成して実行しますが、大量にインポートする場合は新しいテーブルにファイルをインポートし、テーブルを落とす

+0

Ohh eggyalはすでに私がここで話しているものを投稿しています – PandeyTheDBA

関連する問題