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

Тема в разделе "Базы данных", создана пользователем Mimas, 31 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Mimas

    Mimas Создатель

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

    Форум IPB - нарушенная ДБ и из неё надо извлечь только таблицы с основным содержимым -пользователи, посты и подобное...
     
  2. alfaexpert

    alfaexpert

    Регистр.:
    23 июл 2008
    Сообщения:
    183
    Симпатии:
    27
    попробуй зайти через phpmyadmin в нужную таблицу и кликнуть на вкладку Экспорт
    Либо в phpmyadmin в разделе экспорт есть возможность выбирать какие импортировать а какие нет, за счет списка таблиц .
     
  3. val_ykt

    val_ykt Создатель

    Регистр.:
    24 авг 2009
    Сообщения:
    26
    Симпатии:
    1
    Можно использовать
     
  4. Mimas

    Mimas Создатель

    Регистр.:
    7 апр 2009
    Сообщения:
    33
    Симпатии:
    0
    Не получается импортировать отдельную таблицу в ДБ.
    Что не так делаю?
    Сначало с помощью инструментов встроеных в форум 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' 
    
    
     
  5. WerewolfGSM

    WerewolfGSM

    Регистр.:
    4 дек 2006
    Сообщения:
    257
    Симпатии:
    11
    Та БД в которую Вы импортируете таблицу имеет структуру, отличную от той, откуда экспортируете.
    Попробуйте перед импортом добавить таблицу 'icon'.
     
  6. Mimas

    Mimas Создатель

    Регистр.:
    7 апр 2009
    Сообщения:
    33
    Симпатии:
    0
    Всё равно. Вот пробовал на локал её импортировать - там структура точно такая же. Но опять есть ошибка:

    Код:
    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
    Получается, что перести ДБ отдельными таблицами просто не возможно?
     
  7. WerewolfGSM

    WerewolfGSM

    Регистр.:
    4 дек 2006
    Сообщения:
    257
    Симпатии:
    11
    Да можно, просто надо хоть чуть-чуть знать синтаксис мускула.
    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'
     
  8. Mimas

    Mimas Создатель

    Регистр.:
    7 апр 2009
    Сообщения:
    33
    Симпатии:
    0
    У меня такая ситуация - есть поломанная ДБ(что-то при переносе напортачили уроды из техподдержки). Я начисто установил форум, поставил все моды, которые были на старом (1-2 мода не ставил за ненадобностью) и теперь мне надо в новую нормальную ДБ импортировать данные (только данные) некоторых таблиц из старой ДБ - посты, пользователи, награды и прочее.

    Каким способом это вообще проводимо? Может я просто туплю и иду не тем путём...
     
  9. WerewolfGSM

    WerewolfGSM

    Регистр.:
    4 дек 2006
    Сообщения:
    257
    Симпатии:
    11
    Если тебе надо перенести только данные некоторых таблиц, то путь только один. Реализация может быть разная, но путь один.
    1. Определи нужные таблицы.
    2. Сделай экспорт нужных таблиц через phpMyAdmin или например вот этот скрипт (http://sypex.net/ )
    3. Сравни структуру исходных и результирующих таблиц.
    4. Измени экспортированный скрипт таким образом:
    4.1. Удали из sql файла все команды на создание, удаление или изменение структуры таблиц.
    4.2. Оставить только вставку данных.
    4.3. Если в результирующей таблице есть данные и они не нужны - очистить результирующую таблицу перед импортом (чтобы избежать ошибок о дубле ключей)
    4.4.Если в результирующей таблице есть данные но они НУЖНЫ - изменить sql файл таким образом, чтобы ключи не совпадали.
    4.5. Если результирующая таблица отличается по структуре с исходной, подправить SQL файл.
    5. Сделать импорт и радоваться жизни дальше.
     
    Mimas нравится это.
  10. Mimas

    Mimas Создатель

    Регистр.:
    7 апр 2009
    Сообщения:
    33
    Симпатии:
    0
    WerewolfGSM благодарю за разъяснение.

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