Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: дамп
 
 автор: Геннадий   (29.03.2006 в 08:40)   письмо автору
 
 

Я начинающий, не знаю даже как ввести в базу дамп, а также как выгрузить базу (сделать дамп).

   
 
 автор: cheops (из кафе)   (29.03.2006 в 13:13)
 
   для: Геннадий   (29.03.2006 в 08:40)
 

Дело где происходит? На вашей локальной машине или на сервере?
Если на локальной машине, то можно создать дамп при помощи утилиты mysqldump, которая находится в C:/mysql/bin
mysqldump -u root base > base.sql

где, base - имя базы данных, а файл base.sql - получаемый дамп. Для того, чтобы его потом развернуть необходимо выполнить команду
mysql -u root base < base.sql

   
 
 автор: Геннадий   (30.03.2006 в 09:30)   письмо автору
 
   для: cheops (из кафе)   (29.03.2006 в 13:13)
 

Спасибо. А нельзя ли делать это в коде PHP и на сервере

   
 
 автор: ano360   (30.03.2006 в 12:05)   письмо автору
 
   для: Геннадий   (30.03.2006 в 09:30)
 

Можно:
$mysql=mysql_connect($server,$user,$pass);
mysql_query($ZAPROS,$mysql);
mysql_close($mysql);

Где $ZAPROS-строка, передоваемая mysql на выполнение.
$server=имя сервера
$user=user mysql
$pass=пароль mysql

   
 
 автор: Loki   (30.03.2006 в 12:51)   письмо автору
 
   для: ano360   (30.03.2006 в 12:05)
 

вот так как раз этого не сделать...
может быть через system() можно...

   
 
 автор: cheops   (30.03.2006 в 13:29)   письмо автору
 
   для: Геннадий   (30.03.2006 в 09:30)
 

Дамп имеется ввиду? Можно прибегнуть к оператору SELECT ... INTO OUTFILE, с его помощью можно генерировать достаточно провдаподобные дампы
SELECT * INTO OUTFILE 'text.sql' 
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES STARTING BY 'INSERT INTO tbl VALUES(' TERMINATED BY ');\r\n'
FROM catalogs ORDER BY id_catalog;

Только путь к файлу text.sql нужно указывать абсолютный, чтобы вы могли получить к нему доступ.

   
 
 автор: Trianon   (30.03.2006 в 13:41)   письмо автору
 
   для: cheops   (30.03.2006 в 13:29)
 

FIELDS .... ESCAPED BY '\' при этом подразумевается, или его надо явно прописывать?
В руководстве об этом как-то довольно туманно сказано.

   
 
 автор: Loki   (30.03.2006 в 13:46)   письмо автору
 
   для: Trianon   (30.03.2006 в 13:41)
 

А у меня еще вопрос как делать импорт экранированного дампа при включенных magic_quotes?

   
 
 автор: Trianon   (30.03.2006 в 13:59)   письмо автору
 
   для: Loki   (30.03.2006 в 13:46)
 

Чуть подробнее? Имеется в виду, который через <textarea> взят?

   
 
 автор: Loki   (30.03.2006 в 14:19)   письмо автору
 
   для: Trianon   (30.03.2006 в 13:59)
 

Нет... просто я тут делал дамп, а в текстовых полях встречались одинарные кавычки. Сразу возникла мысль заэкранировать их, но остается неясным как они будут импортированы при условии включенных magic_quotes/
1

INSERT INTO table VALUES(NULL, 'текст 'с кавычками') //это, понятное дело, вызовет ошибку

2 экранируем

INSERT INTO table VALUES(NULL, 'текст \'с кавычками') //при обычных настройках должно сработать

3 при включенных magic_quotes должно вставится

текст \'с кавычками

Собственно, пробовать я не стал, ибо - ленив. Но как я понял, грамотно - весь дамп заэкранировать, а при импорте, если включены кавычки, то лишние слеши... но тогда получается первый вариант. Только как на него отреагирует БД я так и не понял.

   
 
 автор: Trianon   (30.03.2006 в 14:31)   письмо автору
 
   для: Loki   (30.03.2006 в 14:19)
 

Если дамп будет взят через <textarea>, то верхний (наносной) слой слэшей нужно будет соскрести конструкцией

if(get_magic_quotes_gpc()) $dump = stripslashes($dump); 

Если дамп вводится через <input type=file> этого делать не надо.
В mysql дамп попадет в нормальном виде и будет правильно отработан.

Меня смутило выражение "экранированный дамп" . По моему, если это дамп - то он экранирован. А неэкранированный дамп - испорченный дамп.

>но тогда получается первый вариант.
Этого не получится. На входе строка будет такой:
INSERT INTO table VALUES(NULL, \'текст \\\'с кавычками\') 

   
 
 автор: Loki   (30.03.2006 в 15:01)   письмо автору
 
   для: Trianon   (30.03.2006 в 14:31)
 

>Этого не получится. На входе строка будет такой
Короче, надо меньше думать и больше пробовать:)

   
 
 автор: Trianon   (30.03.2006 в 15:26)   письмо автору
 
   для: Loki   (30.03.2006 в 15:01)
 

надо больше думать и больше пробовать:)

   
 
 автор: Loki   (30.03.2006 в 15:48)   письмо автору
 
   для: Trianon   (30.03.2006 в 15:26)
 

на все меня не хватает:)

   
 
 автор: cheops   (30.03.2006 в 14:47)   письмо автору
 
   для: Trianon   (30.03.2006 в 13:41)
 

Только один обратный слеш не получится применить - нужно экранировать и применять два FIELDS .... ESCAPED BY '\\' - без этой конструкции оператор ведёт себя также.

   
 
 автор: Trianon   (30.03.2006 в 14:52)   письмо автору
 
   для: cheops   (30.03.2006 в 14:47)
 

Конечно, два. Это я опечатался. То есть экранирование MYSQL сам добавит, без подсказок. Это радует :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования