2010-08-18 6 views
2

У меня есть устаревшая база данных и таблицы, которые я бы хотел попробовать импортировать в Drupal. Вот пример структуры таблицы:Импорт старой таблицы в базу данных Drupal

Table : Projects 
ProjectID 
ProjectName 
CountryID 
TypeID 

ProjectID является первичным ключом, CountryId и TypeID внешние ключи, которые указывают странам и типа таблицы, соответственно.

Я думаю, что сначала создам тип содержимого проектов, отразив поля, присутствующие в устаревших таблицах, используя CCK. Моя единственная проблема заключается в том, чтобы импортировать данные. Есть ли способ автоматизировать это?

Спасибо!

ответ

1

Если вы можете получить данные в формате CSV/TSV, Node Import должен сделать трюк и ориентирован на сторонних разработчиков, а не разработчиков.

+0

Должен ли файл csv иметь идентификаторы внешнего ключа? Я предполагаю, что создаю тип содержимого проекта, отражающий столбцы, найденные в файле csv. – r2b2

+0

Ему не нужно: он может иметь все, что вы хотите импортировать. И да: каждый столбец будет соответствовать одному биту данных об узле: один столбец может соответствовать заголовку, другой - в поле CCK и т. Д. В вашем примере имя_проекта может отображаться в заголовке узла, а поля идентификатора могут отображаться до трех отдельных полей номера CCK. Это зависит от вас, как вы хотите создать файл CSV для импорта. – 2010-08-18 05:41:45

0

Migrate модуль обрабатывает импорт из таблиц. У Migrate есть крючки для выполнения более сложных импортных операций, но вы должны иметь возможность получить ваши данные достаточно просто, чтобы вам не нужны эти перехватчики (которые не очень хорошо документированы), создав новую таблицу из объединения существующих таблиц. Что-то вроде этого (непроверенные):

CREATE TABLE combined SELECT * FROM Projects p 
LEFT JOIN Country c ON c.CountryID = p.CountryID 
LEFT JOIN Type t ON t.TypeID = p.TypeID 

Если вы решите, что вы хотите, чтобы держать вещи более отделенных, со странами и типов в отдельных типах контента, коллега мой написал a pretty good tutorial on using migrate hooks.

0

Узел импорта довольно хорош, если вы просто экспортируете данные как csv и сначала импортируете внешние ключи. Он работает со сложными полями, такими как ссылки на узлы.

В противном случае вы можете написать базовый модуль, который проходит через базу данных по строкам и вставляет записи в узлы. Некоторые действительно базовые псевдокоды:

$node->title = $row['projectName']; 
$node->type = 'project'; 
$node->country_field[0]['value'] = $row['country_name']; 
if(save_node($node)) { 
set_message('Imported node'); 
} 

У Drupal есть переключение базы данных, поэтому вы можете переключаться между базами данных.

Смежные вопросы