ВСем спасибо за помощь, Друпал - осилил, все работает отлично.
Едиснтвенное, что сейчас стоит на пути появления еще одного полноченного сайта на друпале - экспорт из базы MovableType.
Проблемы две:
1) Техническая - база МТ в ДРУГОЙ кодировке (win-1251)
2) Принципиальная. Я не фига не понимаю, как эти таблицы конвертируются. Взял пхпшный скрипт с drupal.org, но он не фига не конвертирует.
Поможите в последний раз. Обещаю больше не приставать с глупыми вопросами и помогать на форуме ньюбам по мере сил.
Комментарии
минут за несколько написал пхпшную скрипту, котоая перековертит данные мт в utf и делает:
INSERT INTO node
INSERT INTO node_revisions
трабл №1 в том, что записанные таким образом в базу ноды - не показываются на морду, пока через админку их не отредактируешь. Друпал где то еще какие то данные хранит?
трабл№2 - если после такого конвертилова попаытаться руками ввести новый док через админку, то получишь ошибку "dublicate entry", т.е. две записи под одним id пытаюсь записаться. тоже как то прямо скажем непонятно.
короче нужен хелп небольшой. чуй что до полной победы над друпалом остлось чуть-чуть.
Данных там много.
Попробуйте http://drupal.org/project/importexportapi
делает импорт экспорт в CSV и XML.
Импортировать правда у меня не получилось.
Вот пример экспорта ноды (это только кусок который относиться только непосредственно к ноде, но модуль экспортирует еще таксономию, комментарии и т.д.):
<nid>2</nid>
<vid>2</vid>
<type>story</type>
<title>Being a frog</title>
<uid>1</uid>
<status>1</status>
<created>1155660594</created>
<changed>1155660594</changed>
<promote>1</promote>
<moderate>0</moderate>
<sticky>0</sticky>
<revisions>
<revision>
<nid>2</nid>
<vid>2</vid>
<uid>1</uid>
<title>Being a frog</title>
<body>Not as easy as it *rrrrreebbbbbbitttt* looks.</body>
<teaser>Not as easy as it *rrrrreebbbbbbitttt* looks.</teaser>
<timestamp>1155660594</timestamp>
<format>1</format>
<name>TestAdmin</name>
<mail>info@greenash.net.au</mail>
<format-name>Filtered HTML</format-name>
</revision>
</revisions>
<comment>2</comment>
<comment-statistics-nid>2</comment-statistics-nid>
<last-comment-timestamp>1155660594</last-comment-timestamp>
<last-comment-uid>1</last-comment-uid>
<comment-count>0</comment-count>
<totalcount>0</totalcount>
<daycount>0</daycount>
<viewed>0</viewed>
<taxonomy-terms>
<term>
<nid>2</nid>
<tid>1</tid>
<title>Being a frog</title>
<term-name>amphibian</term-name>
</term>
<term>
<nid>2</nid>
<tid>2</tid>
<title>Being a frog</title>
<term-name>froggie</term-name>
</term>
</taxonomy-terms>
<name>TestAdmin</name>
<mail>info@greenash.net.au</mail>
</story>
не, не получается. похоже придется отложить переезд на друпал до появления вменяемого механизма миграции из других систем. может разработчики озадачаться?
в принципе есть еще http://drupal.org/project/node_import
он импортирует из CSV файлов, правда глючит. Например у меня не подхватывает авторов, таксономию и даты. Зато проще гораздо. Но переезжать наверное буду с ним т.к. выбора особого нет. Обещают сделать поддержку Import/Export API и тогда по идее будет все работать. Сделать CSV файл не проблема.
а из MovableType 3.2 нет перекодировщика в PhpBB? Или Invision? Потому что из PhpBB есть нормальный перекодировщик базы данных, все данные подхватывает без проблем...
тема в том, что из-за разных кодировок мне проще самому конвертер написать. что я практически и сделал. вопрос лишь в том, что я не до конца понимаю структуру хранения нод. должно быть что-то кроме node и node_revisions.
может быть кому-то будет интересен мой опыт, хотя я и не претендую на 100% верное и быстрое решение, но русских хелпов я не нашел.
импортировать сам контент очень просто. можно сделать xml файл со всем контентом в нужной кодировке (utf) и парсить его, можно работать через пхп с базой (используя iconv).я пошел по второму пути.
далее, полученные данные циклом по 100 например постов(не спрашивайте на фига цикл) вставляем в соответвующие таблицы Drupala запросами вида:
INSERT INTO node
INSERT INTO node_revisions
Чтобы после экспорта не получить ошибки dublicate id делаем следующее:
1. Считаем, сколько нод мы добавили:
select max(nid) from node;
2. Смотрим табличку(нашел методом тыка):
select * from sequences;
3. Принудительно устанавливаем значение nodeid:
update sequences set node_nid =(значение, полученное в п.1);
Далее, вновь прибывшим нодам нужно присвоить termы (таксономия):
insert into term_node select nid, 1 from node where nid >= 1 and nid >= (значение nid полученное в п.1);
Что касается перекодировки, то писать собственный скрипт маразм. Давно уже есть замечательная утилитка iconv, которая легко и быстро перекодирует хоть utf в cp1251 хоть оюратно. Коли файла много делаем прогон по всем.
Что касается импорта, я бы просто робота заставил через веб интерфейс забивать. Сей способ маразматичен, но позволяет не разбираться в построении базы
что касается iconv - это понятно.
а вот про робота,который будет забивать через форму - любопытно было бы узнать подробнее. это как?
Я для этих целей использую wget, GET идёт через URL, POST передается через параметры командной строки (С POST не эксперементировал, но новая версия wget это точно может) Если при этом нужно анализировать вывод, подключаются grep, awk и expr. Я подобные задачи решаю так (хотя у меня задачи попроще, чем та что описана выше)
Почему bash, а не, например PHP, ну потому что с BASH работать мне проще, а на PHP пишу я тока совместно со справочником функций
Когда я ставил друпал, я в принципе и расцчитывал, что некоторые функции будут выполнять как люди, так и программы, причём используя один и тотже интерфейс. Так что, если кто-то напишит, или написал интерестного робота, прошу поделиться опытом