Как выполнить файл скрипта mysql на PHP?

#php #mysql #sql

#php #mysql #sql

Вопрос:

У меня есть почти 100 МБ файла example.sql. (Фактически файл экспорта данных из другой базы данных)

Я хочу предоставить пользователю возможность запускать этот файл через некоторый интерфейс в моем приложении. Не могли бы вы подсказать мне, как я могу это сделать? Должен ли я рассматривать его как простой текстовый файл? Либо есть какой-нибудь быстрый способ???

Другими словами, я хочу добавить ту же функциональность, что и в phpMyAdmin, функциональность импорта.

Если вы можете направить мне какой-нибудь класс по PHPclass.org это будет здорово.

Комментарии:

1. позвольте пользователю загрузить этот файл и вставить его mysqldump или что-то в этом роде

Ответ №1:

 function import_file($filename){
    if ($file = file_get_contents($filename)){
        foreach(explode(";", $file) as $query){
            $query = trim($query);
            if (!empty($query) amp;amp; $query != ";") {
                mysql_query($query);
            }
        }
    }
}
  

может быть вызван с

 import_file("files/files.sql");
  

Однако эта функция не будет работать должным образом, если file содержит точку с запятой ; где-то еще, а не в конце запроса

Комментарии:

1. Я просто пытаюсь, кажется, лучший вариант. Вернется, чтобы выбрать его в качестве принятого ответа 🙂

2. Это ужасно взорвется, если какие-либо фактические данные содержат ; . Но для быстрого и грязного это «достаточно хорошо»

3. @MarcB: Вау, даже не думал об этой ситуации. В этом случае было бы много вещей, которые необходимо учитывать.

4. @Herbert: драйвер mysql php отключает несколько запросов в одном вызове в качестве меры безопасности от атак sql-инъекций.

5. @Rocket: К счастью, когда речь идет о SQLi. Это не может произойти с mysql_query()

Ответ №2:

Создайте форму загрузки файла, которая позволит доверенным пользователям загружать файл на ваш сервер. Затем вызовите инструменты командной строки mysql из PHP, чтобы импортировать данные в вашу базу данных. Выполнение этого путем попытки разорвать («;», …) завершится неудачей, если в импортированных данных есть какие-либо кавычки с запятой.