如何将大型XML / JSON数据集导入Django / Postgres应用程序/数据库?

时间:2014-04-01 14:30:57

标签: python json django postgresql heroku

我们有一个大型Filemaker数据库,并编写了一个工具,可将所有必需的信息导出到XML / JSON中。

我们已经使用Django REST框架创建了一个Django应用程序并且适当地设置了我们的模型,但现在对将所有XML / JSON数据导入网站的最佳方式感到困惑。

最初,我们修改了Filemaker输出以匹配dumpdata的结构,并认为夹具与loaddata结合将是理想的但是我读的越多,似乎不可能由于最终的大小文件和内存问题(我们目前正在heroku dev实例上托管我们的应用程序。)

有人可以推荐将这个数据集加载到我们的Django应用程序中的最佳方法吗? (我们也可以编写一个脚本,通过API逐个插入所有内容,但这看起来也非常低效。)

如果重要的是,我们的JSON结构如下:

[
    {
        "model": "archive.archiveobject",
        "pk": 1,
        "fields": {
            "title": "Example Title",
            "description": "Example Description",
            "date_begin": "2014-03-12",
            "date_end": "2014-03-12",
            "created": "2014-04-01T14:04:53.496Z",
            "owner": 1
        }
    }
]

1 个答案:

答案 0 :(得分:0)

你应该考虑的其他一些事情:

  • Heroku对请求有时间限制,因此您的应用程序需要在收到请求后立即发送HTTP响应。
  • 如果发生瞬态故障,您可能希望加载是健壮的,因此您需要一种方法将对象标记为已加载并从您离开的位置继续。

我的建议是将作业划分为块(可能是100个对象并从那里上升)并创建一个批量加载API调用,您可以使用它来加载这些块。一个快速而肮脏的解决方案可能是将块放入单独的文件(chunk-0000001.json)并在完成时重命名(loaded-chunk-0000001.json)。对这些文件进行文件级锁定可以让您同时运行该作业。