9

我在数据库中有一个表,我想更新我在本地文件上脱机的列。文件本身有两列

  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

.......

将文件另存为*.sqlupdatescript.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 回答