将旧表导入Drupal数据库

时间:2010-08-18 03:35:38

标签: drupal drupal-6

我想在Drupal中尝试导入遗留数据库和表格。这是一个示例表结构:

Table : Projects
 ProjectID
 ProjectName
 CountryID
 TypeID

ProjectID是主键,CountryID和TypeID是外键,分别指向Countries和Type表。

我想我会首先制作一个Projects内容类型,使用CCK反映遗留表中的字段..我唯一的问题是导入数据..是否有自动化这个?

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您可以将数据转换为CSV / TSV格式,Node Import应该可以解决问题,并且面向站点维护人员而不是开发人员。

答案 1 :(得分: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

答案 2 :(得分: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具有数据库切换功能,因此您可以在数据库之间切换。