我有一串数据,这些数据是通过命令行导入到数据库中的。现在,我将数据保存到文件中,导入文件,然后删除文件。
我可以直接导入它吗?
$data = '...';
file_put_contents('temp.sql', $data);
exec('mysql ... < temp.sql');
unlink('temp.sql');
答案 0 :(得分:0)
如果必须使用php并使用exec作为外部程序将mysql作为外部程序执行,请使用mysql的命令行-e选项:
$data = 'insert 1; insert 2;';
exec("mysql ... -e '$data'");
https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_execute
我想知道也许您最好使用bash或类似工具?
答案 1 :(得分:-1)
您是否尝试过mysqli_multi_query()
函数,该函数允许您使用一个字符串执行多个查询?
$link = mysqli_connect("localhost", "my_user", "my_password", "my_database");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* Run queries */
if (mysqli_multi_query($link, $data) === TRUE) {
echo "It worked";
} else {
echo "It didn't work";
}
如果由于某种原因该字符串太大,则可以用分号;
将其拆分为一个数组,然后对其进行迭代。将最后的代码块替换为:
$queries = explode(";",$data);
foreach ($queries as $q) {
mysqli_query($link, $q);
}