mysql - 是否可以编写一个 MySQL 查询来使用 CSV 中的标识值删除记录?

标签 mysql csv

我知道如何在 PHP 中执行以下操作,但我想知道是否可以编写一个“纯”MySQL 查询来执行相同的操作:

每天晚上,我都有一个脚本生成主键 ID 的 CSV 文件,我需要从大型记录数据库中删除该文件。

是否可以编写一个 MySQL 查询来读取 CSV 文件,并删除每个主键值的记录?在伪代码中,大致如下:

   READ 'CSVFILE.csv' AS FILE;
   FOR EACH( VALUE IN FILE )
        DELETE FROM myTable WHERE id = VALUE;

仅使用 MySQL 查询就可能实现这样的操作吗?

最佳答案

您可以通过使用两个查询并创建临时表来完成您的工作。
LOAD DATA INFILE

LOAD DATA INFILE 'CSVFILE.csv' INTO TABLE temp_tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
DELETE FROM myTable WHERE id IN (SELECT toDeleteIdColumn FROM temp_tbl_name);

关于mysql - 是否可以编写一个 MySQL 查询来使用 CSV 中的标识值删除记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079519/

相关文章:

mysql - 如何将时间戳附加到 curdate() 返回的 mysql 时间?

php - 此查询的可能 JOIN

java - 删除 .txt 文件每一行的最后一个字符

php - Magento:为下的每个订单自动创建 CSV 文件

windows - R csv.bz2 Shell Windows 计算行数

mysql - 如何在 MySql 中以句子的形式返回某些内容?

php - 如果没有删除 DB 行,则返回 false?

Python:Pandas Csv 导入,对象到数字

postgresql - Postgres COPY 命令 - 带逗号的字段,用双引号引起来

mysql - 在 Ruby 中运行任意 SQL 查询