简体   繁体   English

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

[英]Is it possible to write a MySQL query that deletes records using identifying values in a CSV?

I know how to do the following in PHP, but I am wondering if it is possible to write a "pure" MySQL query to do the same: 我知道如何在PHP中执行以下操作,但是我想知道是否可以编写“纯” MySQL查询来执行以下操作:

Every night, I have a script which generates a CSV file of primary key IDs that I need to delete from a large database of records. 每天晚上,我都有一个脚本,该脚本会生成一个主键ID的CSV文件,需要从大型记录数据库中删除该文件。

Is it possible to write a MySQL query that reads the CSV file, and deletes the record for each primary key value? 是否可以编写一个MySQL查询来读取CSV文件,并删除每个主键值的记录? In psuedocode, something along the lines of: 在psuedocode中,类似以下内容:

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

Is something like this even possible just using a MySQL query? 仅使用MySQL查询,这样的事情甚至可能吗?

You can do your job by using two queries and making a temporary table. 您可以通过使用两个查询并创建一个临时表来完成您的工作。
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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM