Реклама на сайте Advertise with us

Как выполнить импорт дампа базы через PDO?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 01.10.04
Сообщения: 456
Рейтинг: 149

Ссылка на сообщениеДобавлено: 28/04/10 в 20:42       Ответить с цитатойцитата 

Добрый день.

Подскажите, плиз, какой командой можно выполнить многострочный набор SQL-команд?
Например

$dump = "CREATE database .......;
INSERT INTO database ......;
UPDATE database ....;"

то есть загрузить сразу дамп базы?

Спасибо!

0
 



С нами с 01.03.07
Сообщения: 304
Рейтинг: 223

Ссылка на сообщениеДобавлено: 28/04/10 в 21:19       Ответить с цитатойцитата 

мож тебе это надо http://php.net/manual/en/mysqli.multi-query.php

0
 



С нами с 01.10.04
Сообщения: 456
Рейтинг: 149

Ссылка на сообщениеДобавлено: 28/04/10 в 21:33       Ответить с цитатойцитата 

Не совсем. Нужно именно через PDO-запрос.

Через PDO пробывал так:
$dbh->exec($dump) и $dbh->query($dump)

но выполняются только для первой строчки из дампа (до первого появления ";"). Вот не знаю как сделать, чтобы весь дамп исполнить в одном запросе.

0
 

Добрых Дел Мастер

С нами с 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

0
 



С нами с 01.10.04
Сообщения: 456
Рейтинг: 149

Ссылка на сообщениеДобавлено: 28/04/10 в 22:25       Ответить с цитатойцитата 

База SQLite, поэтому смысл в импорте дампа целиком в том, что ускоряется
время загрузки в разы. Построчно это очооченньь долго.

Если есть знатоки PDO, то хотелось бы точно знать - возможно ли импортировать все разом?

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 28/04/10 в 22:28       Ответить с цитатойцитата 

ступил, через PDO так не получится

0
 

Чингачгук, вождь красноглазых

С нами с 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 такие вещи проделывать просто идеологически неправильно.

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 29/04/10 в 00:36       Ответить с цитатойцитата 

http://www.sqlitemanager.org/ тебе в помощь.
А так сам разбивай скриптом на запросы и выполняй по порядку.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 



С нами с 01.10.04
Сообщения: 456
Рейтинг: 149

Ссылка на сообщениеДобавлено: 29/04/10 в 05:18       Ответить с цитатойцитата 

Главная цель - это сократить количество открытий-закрытий файлов для
записи. Это очень жутко тормозит набивание базы.

0
 



С нами с 01.10.04
Сообщения: 456
Рейтинг: 149

Ссылка на сообщениеДобавлено: 29/04/10 в 07:36       Ответить с цитатойцитата 

ступил

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »