Как мне использовать PHP для выполнения SQL-файла в пакете, который содержит тысячи операторов? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть файл .sql, содержащий несколько операторов TRUNCATE, DROP TABLE IF EXISTS и CREATE TABLE, а также тысячи операторов INSERT и UPDATE.

I'mпытается использовать PHP для выполнения всех операторов в файле в пакетном режиме следующим образом:

$sql = file_get_contents('path/to/sql/file.sql');
$link->($sql);

Где $link - действительная ссылка на MySQLi DB.Я также пытался заменить $link->($sql) на $link->multi_query($sql), но ни один из них, похоже, не работает.

Если это имеет какое-то значение, я пытаюсь сделать это в среде локального хоста XAMPP на Windows 10 с PHP7.1 и MariaDB 15.1.

Кто-нибудь знает, почему это может вызвать проблемы, а не работать?
Какой лучший способ в PHP выполнить файл SQL с тысячами операторов в нем?
Спасибо.

1 Ответ

0 голосов
/ 10 июня 2018

Райан, еще раз спасибо за совет.Как вы и предлагали, запуск команды mysql непосредственно в файле SQL - это путь.

Для меня сработало следующее:

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');
...