#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, чтобы импортировать данные в вашу базу данных. Выполнение этого путем попытки разорвать («;», …) завершится неудачей, если в импортированных данных есть какие-либо кавычки с запятой.