删除SQL文件中的语句批量运行

时间:2014-10-16 12:59:42

标签: php mysql sql

我使用PHP解析大型CSV文件并生成包含INSERT个请求的SQL文件。 但是在文件的开头,我还放了一个DELETE语句来清除数据库。

我的文件看起来像这样:

DELETE FROM `my_table` WHERE id IN (<list>) ;
INSERT INTO `my_table` .... (lot of values);

正确插入了行,但未删除旧行。我在PHPMyAdmin中尝试了删除请求:它有效。所以问题来自我运行sql文件的方式。

我在PHP中使用exec方法:

$command = "mysql.exe -u user -pPassword my_database < sqlfile.sql";

似乎这一行使用左V形,适用于INSERT语句,但不适用于DELETE语句。

有什么想法解决这个问题吗?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

代码并不完全清楚,但是根据您的WHERE ... IN子句判断,您要么通过SELECT手动生成ID并手动递增(通常是坏的),要么就是这么做错误。我根据这些情况看到了两个选项:

TRUNCATE TABLE `my_table`

这会清空所有表中的所有先前值。

其次,如果您是自动生成ID,请将ID设置为自动增量并尝试

# Null corresponds to auto-increment/primary key ID field in MySQL table
INSERT INTO `my_table` ... VALUES (null, value, value)