2012-08-29 3 views
0

MySQL 데이터베이스를 통해 Heroku에서 호스팅하고 전용 PostgreSQL 인스턴스로 이식하는 중입니다. 헤로 쿠에 대한 초기 데이터를 얻는 방법을 알고 있습니다. 그러나 외부 회사의 데이터를 매일 가져와야 할 필요가있는 일일 "피드"가 있습니다. 그것은 FTP 서버에 올려지며 여러 다른 CSV 파일을 포함하는 zip 파일입니다. 일반적으로, 나는 Postgres 박스로 scp 할 수 있고, 데이터를 임포트하기 위해 "COPY tablename FROM path/to/file.csv"를 수행하는 크론 작업을 할 수있다. 그러나, Heroku를 사용하면이 작업을 수행하는 가장 좋은 방법에 대해 다소 당황 스럽습니다. 참고 : 데이터 가져 오기에 heroku dev article을보고 검토했습니다. 그러나 이것은 더 많은 덤프 파일입니다. 저는 CSV 파일에서 매일 가져 오기를 다루고 있습니다.Heroku에서 일일 Postgres 데이터베이스로 가져 오기

누군가가 Heroku에서 이와 비슷한 작업을 수행합니까? 그렇다면 최선의 방법에 대해 조언을 해줄 수 있습니까?

더 많은 정보 : 내 응용 프로그램은 Cedar 스택의 Python/Django 1.3.3입니다. 그리고 내 파일은 약간 클 수 있습니다. 그 중 일부는 50,000 건이 넘습니다. 따라서 루프를 돌리고 Django ORM을 사용하는 것이 다소 느릴 수 있습니다 (그러나 여전히 최선의 해결책 일 수 있습니다).

답변

1

두 가지 옵션 :

  1. 를 부팅 비 Heroku가 EC2 인스턴스는, FTP에서 가져 압축을 풀고 거기에서 복사를 시작합니다. COPYSTDIN 옵션 (http://www.postgresql.org/docs/9.1/static/sql-copy.html)을 사용하면 데이터가 클라이언트 연결에서 오는 것이 아니라 당신이 접근 할 수없는 서버의 파일 시스템에있는 파일.

  2. 파일의 크기는 얼마입니까? dyno의 일시적인 파일 시스템에 맞을 수 있으므로 프로세스 또는 일회용 작업은 FTP 서버에서 파일을 다운로드하고 dyno에서 전체 프로세스를 수행 할 수 있습니다. 일단 프로세스가 종료되면 파일 시스템 데이터가 사라집니다.

+0

답장을 보내 주셔서 감사합니다. 대부분의 파일은 1MB 미만이지만 1 일 파일은 약 110MB이며 증가하지만 (느리게). 여기에 크기 제한은 무엇입니까? 다시 한번 감사드립니다. –

+0

한도는 결정되지 않았지만 상당히 큽니다. 110MB 이상은 괜찮습니다. 또한 STDIN 옵션을 사용하지 않고도 (dyno의) 임시 파일을 참조하는 dyno에서'\ copy'를 직접 실행할 수 있습니다. – hgmnz

+0

정말 훌륭합니다 ... 장고 ORM을 사용하면 정말 속도가 빨라질 것입니다. –

관련 문제