2012-08-29 38 views
0

我正在將MySQL數據庫移植到Heroku託管的專用PostgreSQL實例。我知道如何將初始數據傳遞給Heroku。但是,每天都需要從外部公司獲取每日「飼料」數據。它被推送到一個FTP服務器,它是一個包含幾個不同的CSV文件的zip文件。通常情況下,我可以/只是將其轉移到Postgres框中,然後執行一個執行「COPY tablename FROM path/to/file.csv」的cron作業來導入數據。然而,使用Heroku讓我有點困惑,最好的方式來做到這一點。注意:我已經看到並審查了關於導入數據的heroku dev article。但是,這更像是一個轉儲文件。我只是處理從CSV文件每天導入。每日匯入Heroku託管Postgres數據庫

有沒有人在Heroku上做過類似的事情?如果是這樣,你能給出什麼是最好的方法的意見。

更多信息:我的應用程序是Cedar棧上的Python/Django 1.3.3。而我的文件可能有點大。其中一些可以超過5萬條記錄。因此,通過它們循環並使用Django ORM可能會有點慢(但仍然可能是最好的/唯一的解決方案)。

回答

1

兩個選項:

  1. 啓動非Heroku的EC2實例,從FTP取,解壓縮,並從那裏開始的副本。通過使用COPYSTDIN選項(http://www.postgresql.org/docs/9.1/static/sql-copy.html),您可以指示數據來自客戶端連接,而不是來自文件在您無權訪問的服務器文件系統上。

  2. 該文件有多大?它可能適合測試儀的臨時文件系統,因此一個進程或一個關閉作業可以從FTP服務器上下載文件,並從一個測試儀中完成整個過程。一旦進程退出,離開文件系統數據。

+0

感謝您的回覆。大多數文件都在1MB以下,但每天1個文件大約爲110MB,並在不斷增長(但速度很慢)。這裏的尺寸限制是多少?再次感謝。 –

+0

極限未確定,但相當大。它可以採取110MB +就好了。此外,您可以直接從dyno引用臨時文件(在dyno上)發出'\ copy',而不需要求助於STDIN選項。 – hgmnz

+0

這是非常好的...它會真正加速使用Django ORM。 –

相關問題