mysql - 使用过滤器上传 csv 文件

标签 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

我想仅使用以下命令插入事件的“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 行而不是预期的 2 行填充你的表。

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

您可以在加载文件(在 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'";

关于mysql - 使用过滤器上传 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42531728/

相关文章:

php - 如何仅在 PHP 中将数据库行转换为 JSON 值字符串?

angular - 使用 ng2-Uploader (Angular2) & .net core 上传文件

csv - 谷歌发布的 csv 的限制是什么

performance - JMeter CSV 数据集拆分成线程(用户)

PHP Mysql 合并值(删除重复的电子邮件但保留值)

mysql - 高级 SQL 从同一个表中选择和更新项目

mysql - Spring Boot 的数据源错误

angular - 我正在尝试在不使用 Cloudinary SDK 的情况下使用 Cloudinary post API 上传图像

java - FileUploadBase$SizeLimitExceededException : the request was rejected because its size (337867) exceeds the configured maximum (200)

csv - 在 Julia 中,当我使用 CSVread 或 readtable 时,出现错误 "xx not defined"显示