0

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

我的 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
4

1 回答 1

2

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

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

您可以在加载文件(在 mysql 之外)之前过滤文件(在 Linux 上)

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'";
于 2012-08-28T09:32:02.243 回答