【问题标题】:Daily import into Heroku hosted Postgres database每日导入 Heroku 托管的 Postgres 数据库
【发布时间】:2012-08-23 15:38:34
【问题描述】:

我正在将 MySQL 数据库移植到 Heroku 托管的专用 PostgreSQL 实例。我了解如何将初始数据传递给 Heroku。但是,每天都有来自外部公司的数据“馈送”,需要每天导入。它被推送到 FTP 服务器,它是一个包含多个不同 CSV 文件的 zip 文件。通常,我可以/只会将其 scp 到 Postgres 框,然后有一个 cron 作业执行“从路径/到/file.csv 复制表名”来导入数据。然而,使用 Heroku 让我对最好的方法感到困惑。注意:我已经查看并查看了有关导入数据的 heroku dev article。但是,这更像是一个转储文件。我只是处理每天从 CSV 文件导入。

有人在 Heroku 上做类似的事情吗?如果是这样,您能否就最佳方法提供任何建议。

更多信息:我的应用程序是 Cedar 堆栈上的 Python/Django 1.3.3。而且我的文件可能有点大。其中一些可以超过 50K 记录。因此,遍历它们并使用 Django ORM 可能会有点慢(但是,仍然可能是最好/唯一的解决方案)。

【问题讨论】:

    标签: python django postgresql heroku


    【解决方案1】:

    两种选择:

    1. 启动非 Heroku EC2 实例,从 FTP 获取,解压缩并从那里启动副本。通过使用 COPY STDIN 选项(http://www.postgresql.org/docs/9.1/static/sql-copy.html),您可以指示它数据来自客户端连接,如与您无权访问的服务器文件系统上的文件相反。

    2. 文件有多大?它可能适合 dyno 的临时文件系统,因此一个进程或一个离线工作可以从 FTP 服务器下载文件并在 dyno 内完成整个过程。一旦进程退出,文件系统数据就会消失。

    【讨论】:

    • 感谢您的回复。大多数文件都在 1MB 以下,但每天 1 个文件大约 110MB 并且还在增长(但速度很慢)。这里的大小限制是多少?再次感谢。
    • 限制未定,但相当大。它可以占用 110MB+ 就好了。此外,您可以直接从 dyno 发出 \copy 引用临时文件(在 dyno 上),而无需使用 STDIN 选项。
    • 太棒了......它真的会比使用 Django ORM 更快。
    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2020-11-07
    • 2013-12-28
    • 2013-08-17
    • 2013-07-31
    相关资源
    最近更新 更多