【问题标题】:How to migrate Drupal data to Django?如何将 Drupal 数据迁移到 Django?
【发布时间】:2011-06-29 22:37:33
【问题描述】:

我想将 Drupal 6 站点的一部分迁移到 Django 应用程序,特别是基于 Drupal 的问答部分,我认为与 OSQA 一起工作会更好。我已经为这个集成创建了另一个question related to the authentication part,出于这个问题的目的,我们可以假设所有 Drupal 用户都将在 Django 数据库中重新创建,至少是他们的用户名。这个问题是关于从 Drupal 到 Django 的数据迁移。

在 Drupal 中,我将所有问题作为带有一些 CCK 字段的“问题”内容类型的节点,并且这些问题的答案是标准 cmets。我需要帮助才能找到在 Django 中将此数据移动到 OSQA 的最佳方式。

起初我以为我可以使用 South,但我不确定它是否最适合我的需求。

目前我认为我最好的方法是编写一个连接到 Drupal 数据库的 Django 应用程序,使用相应的 cmets 和用户查询所有问题,然后使用正确的模型和 Django 方法直接插入到 Django 的数据库中。

我在正确的道路上吗?还有其他建议吗?

谢谢!

【问题讨论】:

  • 请链接到这个“OSQA”和另一个问题。
  • 听起来像是从 drupal 中拯救人们的一项值得付出的努力。
  • 嘿,如果 Drupal 是人们想要的,那就让他们拥有吧。这是一个 80% 的解决方案。当有人发现他们在 20% 中时,这不像 Drupal 爆炸或什么的;他们仍然可以在切换期间使用它。

标签: database django drupal data-migration


【解决方案1】:

起初我以为我可以使用 South,但我不确定它是否最适合我的需求。

不,南方不适合这种迁移。它用于项目内迁移,你会想要它,但在这里它对你没有任何好处。

“迁移”确实不是您需要的好词。您真正想做的是从 Drupal 导出数据并将其导入到 Django。

我还没有对此可能的解决方案进行深入分析,但是如果我要求我做同样的事情,我会简单地为传输定义一个基于 JSON 或 XML 的交换格式,然后编写一个一组代码将数据从 Drupal 导出为这种格式,然后另一组代码将数据从这种格式导入 Django。我强烈建议不要对这种交换使用二进制格式;将数据加载到文本编辑器以验证数据并修复问题的能力非常重要。

目前我认为我最好的方法是编写一个连接到 Drupal 数据库的 Django 应用程序,使用相应的 cmets 和用户查询所有问题,然后使用正确的模型和 Django 方法直接插入到 Django 的数据库中。

如果您想跳过交换文件并一步完成,那么您不想为导入而编写新的 Django 应用程序;那是(恕我直言)矫枉过正。您要编写的是应用程序中的Django management command,您将向其中导入数据,并且您可能希望使用Django's support for multiple databases 以及模型属性(例如db_tabledb_column)来使用现有数据库模式。这就是我推荐交换文件方法的原因:您不需要在 Django 模型中重新实现 Drupal 表。

【讨论】:

  • 你说得对,我的意思是从 Drupal 导出并导入到 Django(我应该更改我的问题标题吗?)。我认为使用 JSON 作为交换格式是一个好主意,是的,我知道你在文本编辑器中编辑数据的意思,这非常有帮助。我也将遵循 Django 管理命令路线。非常感谢您的想法。
【解决方案2】:

Mike 的回答是不错的选择。但是在现实世界的场景中,您会发现混合不同的技术很有用,例如连接到原始 Drupal 数据库以获取引用本地目录的文件内容(对文件的查询是从几个表中简单连接),但通过处理最结构化的数据自定义 JSON 视图(例如节点)。

在这种情况下,通过Views Datasource 模块创建的 JSON 视图可以帮助您通过简单的 Drupal 视图设计和选择数据。然后你可以写一个management command 来读取和解析之前建议的数据。您必须以一种不需要太多处理的方式来分页视图,您甚至可以使用gevent 执行异步请求以加快检索速度。

通过这种方式,我在不到 10 分钟的时间内解析了超过 15k 的内容,虽然不是那么快,但对于一次性导入来说是可以接受的。如果您想存储内容以供以后处理,您可以通过 python redis integration 将原始数据保存在数据库上的自定义模型或内存redis 数据存储中。如果你想了解一些细节,我写了一个detailed howto for Drupal-Django migration 来加深这些技术。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 2018-10-13
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2020-07-21
    • 1970-01-01
    相关资源
    最近更新 更多