根据列名称下的特定字段忽略行

时间:2015-07-03 06:26:54

标签: mysql

我有一个非常大的csv文件,其中包含多个字段,例如:msg_id,transaction_type,flow_name,attribute_name,attribute_value。我只需要将那些行加载到数据库,其中attribute_name不等于“memo”。

我用来加载csv文件的代码片段如下:

LOAD DATA infile 'c:/tmp/UserData.csv'
INTO TABLE UserData
FIELDS terminated by ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE rows where attribute_name="memo";

我需要填写这个“IGNORE”条款。我该怎么做?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这里我正在更新逻辑但未经我验证,因此可能会抛出一些语法错误但我们可以继续处理 -

LOAD DATA INFILE 'c:/tmp/UserData.csv'
IGNORE INTO TABLE UserData
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(@id,field2,field3,....,fieldn) 
SET id = IF(attribute_name="memo", 1, @id);

逻辑:我们将主键值设置为1,而attribute_name =' memo'然后在插入时忽略重复行,因为主键1已经存在,因此将跳过所有行。