从本地文件更新MySQL表

时间:2012-05-21 06:00:58

标签: mysql sql

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

  1. 对应于表格中的ID列的ID,
  2. 实际值。
  3. 我已经能够使用

    创建新行
    LOAD DATA INFILE 'file.txt' INTO TABLE table
      FIELDS TERMINATED BY ','
    

    但我不确定如何以文件中的ID列连接到表中的ID列的方式专门插入值。有人可以帮助SQL语法吗?

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:6)

另一种方式可能是......

既然您已经知道了表名,那么也有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"

答案 2 :(得分:0)

取决于行数, 如果它是数百个更新列的脚本并运行它,但如果是大卷导入该文件到新表并使用连接更新您的表,然后删除表