我正在使用bash在mySQL中加载文件,我有:
mysql --local-infile=1 -u user data_base_1 < file.sql
和file.sql是:
..$ cat file.sql
load data local infile '/folder/load.csv' into table table_1 fields terminated by '|'
代码正常。
问题是,如果文件中存在一个行的PK,则不会插入行,如果存在该行存在并替换表中的行,我需要。我该怎么办?
谁可以帮助我?
谢谢
您可以用LOAD DATA
指定REPLACE
:
LOAD DATA LOCAL INFILE '/folder/load.csv' REPLACE INTO TABLE table_1 FIELDS TERMINATED BY '|'
否则使用mysqlimport --replace
选项。
http://dev.mysql.com/doc/refman/5.6/en/mysqlimport.html#option_mysqlimport_replace
您可以加载到临时表中,然后执行两个SQL语句:
UPDATE table
WHERE ... (match found)
;
INSERT into table(...)
SELECT ...
FROM temp_table
WHERE NOT EXISTS(...)