С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 28/04/10 в 20:42 |
Добрый день.
Подскажите, плиз, какой командой можно выполнить многострочный набор SQL-команд?
Например
$dump = "CREATE database .......;
INSERT INTO database ......;
UPDATE database ....;"
то есть загрузить сразу дамп базы?
Спасибо!
|
|
|
|
С нами с 01.03.07
Сообщения: 304
Рейтинг: 223
|
Добавлено: 28/04/10 в 21:19 |
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 28/04/10 в 21:33 |
Не совсем. Нужно именно через PDO-запрос.
Через PDO пробывал так:
$dbh->exec($dump) и $dbh->query($dump)
но выполняются только для первой строчки из дампа (до первого появления ";"). Вот не знаю как сделать, чтобы весь дамп исполнить в одном запросе.
|
|
|
|
Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 28/04/10 в 22:17 |
Все правильно, вставляется одна строка, символ (;) - окончание SQL-запроса. Файл прочитай в массив строк. Потом в цикле прогони INSERTы.
Если у тебя дамп структура+данные то shell> mysql database < script.sql попробуй. Если просто набор инсертов для таблиц то LOAD DATA LOCAL INFILE 'file_name.txt' INTO TABLE tbl_name
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 28/04/10 в 22:25 |
База SQLite, поэтому смысл в импорте дампа целиком в том, что ускоряется
время загрузки в разы. Построчно это очооченньь долго.
Если есть знатоки PDO, то хотелось бы точно знать - возможно ли импортировать все разом?
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 28/04/10 в 22:28 |
ступил, через PDO так не получится
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 29/04/10 в 00:30 |
alexxxus писал: | База SQLite, поэтому смысл в импорте дампа целиком в том, что ускоряется
время загрузки в разы. Построчно это очооченньь долго.
Если есть знатоки PDO, то хотелось бы точно знать - возможно ли импортировать все разом? |
Тут не от PDO зависит, а от базы. Если у SQLite нету возможности выполнять несколько запросов в одном вызове API (что я подозреваю, имеет место быть), то нифига ты не добьешься. И, более того, даже если где-то у тебя и получится сделать через PDO подобный трюк, то ничего не выигрываешь - поскольку вызов PDO все равно будет транслироваться в вызовы SQLite API в конце концов, так что где-то по пути твой дамп все равно разобъется на отдельные запросы. Это у MySQL есть возможность в mysql_real_query() (начиная с 5.0) такие штуки проделывать и запихивать в один вызов несколько запросов, а тут, я так думаю - облом. И вообще это нестандартно, и в унифицированных интерфейсах типа PDO такие вещи проделывать просто идеологически неправильно.
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 29/04/10 в 00:36 |
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 29/04/10 в 05:18 |
Главная цель - это сократить количество открытий-закрытий файлов для
записи. Это очень жутко тормозит набивание базы.
|
|
|
|
С нами с 01.10.04
Сообщения: 456
Рейтинг: 149
|
Добавлено: 29/04/10 в 07:36 |
ступил
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |