9

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

  1. テーブルの ID 列に対応する ID、および
  2. 実際の値。

を使用して新しい行を作成できました

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

しかし、ファイルの ID 列がテーブルの ID 列に結合されるような方法で値を具体的に挿入する方法がわかりません。誰かが SQL 構文を手伝ってくれますか?

4

3 に答える 3

10

INSERT ... SELECT ... ON DUPLICATE KEY UPDATEデータを一時テーブルにロードしてから、 ;を使用することをお勧めします。例えば:

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;
于 2012-05-21T06:06:59.783 に答える
7

別の方法は...

テーブル名とIDと実際の値がすでにわかっているので...できることは...次のように更新ステートメントをファイルに直接書き込むことです

update mytable set value_col = value where ID_col = ID;

Second Update Statement

Third Update statement

.......

*.sqlファイルを次のように保存し、updatescript.sqlそのスクリプトを次のように直接実行します

mysql -h <hostname> -u root -p <your_db_name> < "E:/scripts/sql/updatescript.sql"
于 2012-05-21T06:17:30.480 に答える
0

それは行数に依存します。数百の場合は更新列のスクリプトを作成して実行しますが、大量の場合はそのファイルを新しいテーブルにインポートし、結合でテーブルを更新してからドロップしますテーブル

于 2012-05-21T06:27:42.037 に答える