Перенос отдельных таблиц ДБ

Статус
В этой теме нельзя размещать новые ответы.

Mimas

Создатель
Регистрация
7 Апр 2009
Сообщения
33
Реакции
0
Подскажите, пожалуйста, поподробнее как перенести не целую ДБ а только содержание отдельной таблицы.

Форум IPB - нарушенная ДБ и из неё надо извлечь только таблицы с основным содержимым -пользователи, посты и подобное...
 
попробуй зайти через phpmyadmin в нужную таблицу и кликнуть на вкладку Экспорт
Либо в phpmyadmin в разделе экспорт есть возможность выбирать какие импортировать а какие нет, за счет списка таблиц .
 
Можно использовать
mysqldump --host=адрес_сервера -u имя_юзера --password=пароль -r путь_выходного_файла имя_базы имя_таблицы
 
Не получается импортировать отдельную таблицу в ДБ.
Что не так делаю?
Сначало с помощью инструментов встроеных в форум IPB экспортирую отдельную таблицу себе на комп в формате название.sql.gz
После этого иду в ДБ куда мне надо импортировать эту таблицу. Открываю "Импорт", нахожу нужный файл с таблицей, выставляю сравнение и нажимаю ОК.
А мне выдаёт вот такую ошибку

Код:
Ошибка
SQL-запрос: 

INSERT INTO ibf_forums (id, topics, posts, last_post, last_poster_id, last_poster_name, name, description, position, use_ibc, use_html, status, password, password_override, last_title, last_id, sort_key, sort_order, prune, topicfilter, show_rules, preview_posts, allow_poll, allow_pollbump, inc_postcount, skin_id, parent_id, quick_reply, redirect_url, redirect_on, redirect_hits, redirect_loc, rules_title, rules_text, topic_mm_id, notify_modq_emails, sub_can_post, permission_custom_error, permission_array, permission_showtopic, queued_topics, queued_posts, forum_allow_rating, forum_last_deletion, newest_title, newest_id, icon) VALUES('3','12','0','1252013609','412','marischka','�������','','3','1','0','1','','','��: ���� �� ������� ����.������. (�� ���� � ID: 4594)','5156','last_post','Z-A','100','all',NULL,'0','1','0','1',NULL,'1','1','','0','0','','',NULL,'','','1','','a:6:{s:11:\\"start_perms\\";s:3:\\"4,7\\";s:11:\\"reply_perms\\";s:3:\\"4,7\\";s:10:\\"read_perms\\";s:3:\\"4,7\\";s:1[...] 

Ответ MySQL:  

#1054 - Unknown column 'icon' in 'field list'
 
Та БД в которую Вы импортируете таблицу имеет структуру, отличную от той, откуда экспортируете.
Попробуйте перед импортом добавить таблицу 'icon'.
 
Всё равно. Вот пробовал на локал её импортировать - там структура точно такая же. Но опять есть ошибка:

Код:
SQL-запрос: 

INSERT INTO ibf_forums( id, topics, posts, last_post, last_poster_id, last_poster_name, name, description, position, use_ibc, use_html, 
STATUS , 
PASSWORD , password_override, last_title, last_id, sort_key, sort_order, prune, topicfilter, show_rules, preview_posts, allow_poll, allow_pollbump, inc_postcount, skin_id, parent_id, quick_reply, redirect_url, redirect_on, redirect_hits, redirect_loc, rules_title, rules_text, topic_mm_id, notify_modq_emails, sub_can_post, permission_custom_error, permission_array, permission_showtopic, queued_topics, queued_posts, forum_allow_rating, forum_last_deletion, newest_title, newest_id, icon ) 
VALUES (

'1', '0', '0', '0', '0', '', 'Админка', '', '1', '0', '0', '0', '', '', '', '0', '', '', '0', '', '0', '0', '0', '0', '0', NULL , '-1', '0', '', '0', '0', '', '', '', '', '', '0', '', 'a:6:{s:11:\\"start_perms\\";s:0:\\"\\";s:11:\\"reply_perms\\";s:0:\\"\\";s:10:\\"read_perms\\";s:0:\\"\\";s:12:\\"upload_perms\\";s:0:\\"\\";s:10:\\"show_perms\\";s:3:\\"4,7\\";s:14:\\"download_perms\\";s:0:\\"\\";}', '1', '0', '0', '0', '1', '', '0', ''
) 
Ответ MySQL:  

#1062 - Duplicate entry '1' for key 1 

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\Tools\phpmyadmin\libraries\common.lib.php on line 685

А когда посмотрю подробнее, так пишет вот это:

Код:
SQL-запрос: 

SELECT * 
FROM WHERE LIKE '1' 
Ответ MySQL:  

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE  LIKE '1'' at line 1

Получается, что перести ДБ отдельными таблицами просто не возможно?
 
Да можно, просто надо хоть чуть-чуть знать синтаксис мускула.
1) #1062 - Duplicate entry '1' for key 1 - означает что поле, которое является индексным и уникальным уже содержит запись со значением 1. Надо либо удалить старое поле, либо поменять значение ключа.
2) SELECT * FROM WHERE LIKE '1' Жуть. Между FROM и WHERE надо указать название таблицы, из которой берется выборка. А между WHERE и LIKE надо указать имя поля, по которому Вы делаете сравнение.
Вобщем должно получиться что-то такое: SELECT * FROM ibf_forums WHERE id LIKE '1'
 
У меня такая ситуация - есть поломанная ДБ(что-то при переносе напортачили уроды из техподдержки). Я начисто установил форум, поставил все моды, которые были на старом (1-2 мода не ставил за ненадобностью) и теперь мне надо в новую нормальную ДБ импортировать данные (только данные) некоторых таблиц из старой ДБ - посты, пользователи, награды и прочее.

Каким способом это вообще проводимо? Может я просто туплю и иду не тем путём...
 
Если тебе надо перенести только данные некоторых таблиц, то путь только один. Реализация может быть разная, но путь один.
1. Определи нужные таблицы.
2. Сделай экспорт нужных таблиц через phpMyAdmin или например вот этот скрипт ( )
3. Сравни структуру исходных и результирующих таблиц.
4. Измени экспортированный скрипт таким образом:
4.1. Удали из sql файла все команды на создание, удаление или изменение структуры таблиц.
4.2. Оставить только вставку данных.
4.3. Если в результирующей таблице есть данные и они не нужны - очистить результирующую таблицу перед импортом (чтобы избежать ошибок о дубле ключей)
4.4.Если в результирующей таблице есть данные но они НУЖНЫ - изменить sql файл таким образом, чтобы ключи не совпадали.
4.5. Если результирующая таблица отличается по структуре с исходной, подправить SQL файл.
5. Сделать импорт и радоваться жизни дальше.
 
WerewolfGSM благодарю за разъяснение.

Но пойду видимо упорно учить книги по MySQL - твои пояснениея, как угодно подробные, выше моих знаний.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху