我在数据库中有一个表,我想更新一个我在本地文件上脱机的列。文件本身有两列
我已经能够使用
创建新行LOAD DATA INFILE 'file.txt' INTO TABLE table
FIELDS TERMINATED BY ','
但我不确定如何以文件中的ID列连接到表中的ID列的方式专门插入值。有人可以帮助SQL语法吗?
答案 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
.......
将文件另存为*.sql
,updatescript.sql
,然后直接执行该脚本
mysql -h <hostname> -u root -p <your_db_name> < "E:/scripts/sql/updatescript.sql"
答案 2 :(得分:0)
取决于行数, 如果它是数百个更新列的脚本并运行它,但如果是大卷导入该文件到新表并使用连接更新您的表,然后删除表