2011-01-20 90 views
0

我正在开发一个Drupal项目,其中我有两种类型的CCK内容类型 - “场地”(父节点)和“音乐会”(孩子节点)。在Drupal6中从CSV导入时从子节点创建父节点

我已经通过node_import模块从CSV导入了一堆知名场馆,现在需要导入另一个充满节目的CSV。

我如何:

一个。参考音乐会CSV中的场地 - 我基本上需要做的是根据location.module地址(但不是CCK类型,因为我如何导入场地)创建节点引用,但我不知道如何导入像这样,尤其是当两张表之间的相同地址可能有所不同时(在标点符号等方面)。

b。对于一些音乐会上市,我的场地数据表可能不完整。导入时,如果导入程序无法找到子节点引用的地址,如何创建父节点?请注意,音乐会CSV包含来自每行中场地CSV的大部分信息。

我提到我正在使用node_import,但我想我可能需要使用Data API。我对后者没有经验(或者确实喜欢某种特定的导入方法),并且非常感谢您给我提供的任何帮助。

回答

1

对于你来说,feed会是一个很好的解决方案,我想。您需要为导入器为2种不同的内容类型进行设置,并且根据文件的结构,您可能需要通过两个导入器运行相同的文件。

对于节点引用,您需要使用node_reference映射器,该映射器可能目前仅作为补丁存在,或者编写自己的(我们最终在下午完成)。

我们目前正在做一些类似的进口60k拍卖列表,并分布在30-40个事件中。奇迹般有效。

节点参考映射: http://drupal.org/node/724536

提要: http://drupal.org/project/feeds

至于为什么你可能需要导入相同的文件不止一次,这里是我们如何导入具有CSV文件中一个简单的例子有关相同文件中的项目和事件的信息。 如果您有具有下列结构的文件:

|item_id|event_id|item_body |event_body | 

|12231 | 123 | 'price $1'| 'on friday'| 

|12232 | 123 | 'price $5'| 'on friday'| 

我们运行这个两个事件内容类型进口商来说,无论是* _id列是GUID,身体被导入为身体。事件导入器首先运行。对于该项目,event_id用于查找为该事件创建的节点,并创建节点引用。未被导入的内容类型的信息会被忽略。

只有事项标识的第一个实例所需要的身体或其他领域,但我们的一些供应商的重复,它实际上并不慢下来,从我还记得那些数据。我们也有发送事件2个独立文件1,一个用于项目,包含事件ID列中的项目供应商。

+0

这是有用的;我会在今天下午晚些时候给你一个镜头,然后回复你。谢谢! – aendrew 2011-01-20 22:23:21