我有一个.sql
文件,其中包含一些TRUNCATE
、DROP TABLE IF EXISTS
和CREATE TABLE
语句以及数以千计的INSERT
和UPDATE
语句。
我尝试使用PHP批量执行文件中的所有语句,如下所示:
$sql = file_get_contents('path/to/sql/file.sql');
$link->($sql);
其中$link
是有效的MySQLi DB链接。我也尝试过用$link->multi_query($sql)
替换$link->($sql)
,但似乎都不起作用。
如果有什么不同的话,我尝试在装有PHP7.1和MariaDB 15.1的Windows10上的XAMPP本地主机环境中这样做。
有人知道为什么这会导致问题而不起作用吗?
在PHP中执行包含数千条语句的SQL文件的最佳方式是什么?
谢谢。
发布于 2018-06-11 03:50:15
莱恩,再次感谢你的建议。正如您所建议的,直接在SQL文件上运行mysql命令是可行的。
下面的方法对我很有效:
shell_exec('C:\\xampp\\mysql\\bin\\mysql.exe -h localhost -u root -ppassword -D db-name "SELECT * FROM table-name;"');
请注意,您不希望在-p
选项和密码本身之间有空格。如果您没有密码,那么只需完全删除-p
选项。
编辑:上面的示例命令是一个非常随意的命令,用于演示运行mysql
命令。如果您想读取和执行一个文件中的一组SQL语句,则需要更多的内容:
shell_exec('C:\\xampp\\mysql\\bin\\mysql.exe -h localhost -u root -ppassword -D db-name < C:\\xampp\\htdocs\\path\\to\\file.sql');
https://stackoverflow.com/questions/50784584
复制相似问题