使用过滤器上传csv文件

时间:2012-08-28 08:53:53

标签: mysql file-upload csv

尝试使用以下查询将CSV数据上传到MYSQL表。它正在成功运行。 CSV文件有2000万个数据。但是现在我还有上传数据的问题。

我的CSV文件结构如下:

Name phone_no     DND
xxx  99934034343  A
xxx  99934034345  D
xxx  99934034346  A
xxx  99934034347  D

我想仅使用以下命令插入活动的no“A”。

LOAD DATA LOCAL INFILE '/root/782012_23.csv'
INTO TABLE tbl_dndno
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';

像这样的预期记录

Name phone_no     DND
 xxx  99934034343  A
 xxx  99934034346  A

1 个答案:

答案 0 :(得分:2)

我猜你的命令运行正常,但用4行而不是预期的2填充你的表。

LOAD DATA IN FILE documentation似乎不支持您要求的内容,它只能逐行排除,因此如果您在创建此csv文件时有办法知道行号,则可以使用此功能。否则有2个解决方法:

您可以使用(在Linux上)

加载文件(在mysql之外)之前过滤文件
grep "D$" /root/782012_23.csv > filteredfile; LOAD DATA LOCAL INFILE 'filteredfile' ...

或通过SQL加载后过滤:

your_command;mysql -u user -ppassword "DELETE FROM yourtable WHERE DND = 'A'";