我使用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语句。
有什么想法解决这个问题吗?
非常感谢:)
答案 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)