Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Как выполнить импорт дампа базы через PDO?
Новая тема
Ответить
цитата
28/04/10 в 20:42
alexxxus
Добрый день.
Подскажите, плиз, какой командой можно выполнить многострочный набор SQL-команд?
Например
$dump = "CREATE database .......;
INSERT INTO database ......;
UPDATE database ....;"
то есть загрузить сразу дамп базы?
Спасибо!
цитата
28/04/10 в 21:19
leroy_17
мож тебе это надо
http://php.net/manual/en/mysqli.multi-query.php
цитата
28/04/10 в 21:33
alexxxus
Не совсем. Нужно именно через PDO-запрос.
Через PDO пробывал так:
$dbh->exec($dump) и $dbh->query($dump)
но выполняются только для первой строчки из дампа (до первого появления ";"). Вот не знаю как сделать, чтобы весь дамп исполнить в одном запросе.
цитата
28/04/10 в 22:17
FXIX
Все правильно, вставляется одна строка, символ (;) - окончание SQL-запроса. Файл прочитай в массив строк. Потом в цикле прогони INSERTы.
Если у тебя дамп структура+данные то shell> mysql database < script.sql попробуй. Если просто набор инсертов для таблиц то LOAD DATA LOCAL INFILE 'file_name.txt' INTO TABLE tbl_name
цитата
28/04/10 в 22:25
alexxxus
База SQLite, поэтому смысл в импорте дампа целиком в том, что ускоряется
время загрузки в разы. Построчно это очооченньь долго.
Если есть знатоки PDO, то хотелось бы точно знать - возможно ли импортировать все разом?
цитата
28/04/10 в 22:28
ibiz
ступил, через PDO так не получится
цитата
29/04/10 в 00:30
Dr.Syshalt
alexxxus писал:
База SQLite, поэтому смысл в импорте дампа целиком в том, что ускоряется
время загрузки в разы. Построчно это очооченньь долго.
Если есть знатоки PDO, то хотелось бы точно знать - возможно ли импортировать все разом?
Тут не от PDO зависит, а от базы. Если у SQLite нету возможности выполнять несколько запросов в одном вызове API (что я подозреваю, имеет место быть), то нифига ты не добьешься. И, более того, даже если где-то у тебя и получится сделать через PDO подобный трюк, то ничего не выигрываешь - поскольку вызов PDO все равно будет транслироваться в вызовы SQLite API в конце концов, так что где-то по пути твой дамп все равно разобъется на отдельные запросы. Это у MySQL есть возможность в mysql_real_query() (начиная с 5.0) такие штуки проделывать и запихивать в один вызов несколько запросов, а тут, я так думаю - облом. И вообще это нестандартно, и в унифицированных интерфейсах типа PDO такие вещи проделывать просто идеологически неправильно.
цитата
29/04/10 в 00:36
Stek
http://www.sqlitemanager.org/
тебе в помощь.
А так сам разбивай скриптом на запросы и выполняй по порядку.
цитата
29/04/10 в 05:18
alexxxus
Главная цель - это сократить количество открытий-закрытий файлов для
записи. Это очень жутко тормозит набивание базы.
цитата
29/04/10 в 07:36
alexxxus
ступил
Новая тема
Ответить
Эта страница в полной версии