mysql加载数据infile where子句

时间:2010-07-21 06:41:55

标签: mysql load-data-infile

我需要根据某些条件使用load data infile更新表中的现有行,这可能吗?

load data infile 'E:/xxx.csv'
into table tld_tod
@aaa, @xxx_date, @ccc
fields terminated by ','
 LINES TERMINATED BY '\r\n'
set xxx = str_to_date(@xxx_date, '%d-%b-%y')
where xxx is not null and aaa=@aaa 

2 个答案:

答案 0 :(得分:1)

在MySQL中,可以在更新之前创建触发器。所以在这种情况下我建议使用:

delimiter //
CREATE TRIGGER upd_check BEFORE UPDATE ON table
       FOR EACH ROW
       BEGIN
           IF NEW.xxx IS NOT NULL THEN
               SET NEW.xxx = 0;
           END IF;
       END;//
delimiter ;

创建触发器后,您可以在没有WHERE的情况下运行加载数据infile。 我不确定你的具体要求是什么,但是在BEGIN和END中进行。

答案 1 :(得分:0)

您还可以创建一个临时表,将CSV文件中的数据插入到临时表中,然后最终使用所需的操作和过滤将数据插入目标表。

CREATE TEMPORARY TABLE staging LIKE tld_tod;

LOAD DATA INFILE 'E:/xxx.csv'
INTO TABLE staging
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';

INSERT INTO tld_tod
SELECT STR_TO_DATE(col_date, '%d-%b-%y') AS date
WHERE col_date IS NOT NULL;