2013-12-11 39 views

Trả lời

54

Đây là cách bạn làm điều đó:

heroku pg:psql --app YOUR_APP_NAME_HERE < updates.sql 

Và nếu bạn muốn khôi phục sản xuất của bạn vào dàn (giả sử cả hai đều Heroku Postgres DBS):

heroku pgbackups:restore YOUR_STAGING_DATABASE_NAME `heroku pgbackups:url --app YOUR_PRODUCTION_APP_NAME` --app YOUR_STAGING_APP_NAME --confirm YOUR_STAGING_APP_NAME 

Đảm bảo duy trì các dấu ngoặc đơn đặc biệt xung quanh "pgbackups heroku: url --app YOUR_PRODUCTION_APP_NAME".

-------- Heroku toolbelt CẬP NHẬT --------

Heroku đã cập nhật gần đây toolbelt của họ để các lệnh cũ không còn giá trị (xem this link để biết thêm). Dưới đây là phiên bản mới của lệnh khôi phục.

heroku pg:backups restore `heroku pg:backups public-url -a YOUR_PRODUCTION_APP_NAME` YOUR_STAGING_DATABASE_NAME --app YOUR_STAGING_APP_NAME --confirm YOUR_STAGING_APP_NAME 
+2

Trong ví dụ đầu tiên, nếu bạn có nhiều hơn 1 cơ sở dữ liệu trên ứng dụng, bạn có thể chỉ định mặc định không (mặc định không sử dụng 'DATABASE_URL') bằng cách thực hiện' heroku pg: psql HEROKU_POSTGRESQL_GREEN_URL --app YOUR_APP_NAME_HERE juanpaco

2

Nạp SQL vào một phiên bản Postgres cục bộ và đảm bảo rằng nó đúng. Sau đó đổ dữ liệu sử dụng các hướng dẫn ở đây: https://devcenter.heroku.com/articles/heroku-postgres-import-export

Cuối cùng, tải lên các bãi rác đến một máy chủ web công cộng (như S3) và khôi phục để Heroku như thế này:

heroku pgbackups:restore DATABASE 'https://s3.amazonaws.com/me/items/3H0q/mydb.dump' 
+1

Có cách nào để làm điều đó mà không có một cơ sở dữ liệu địa phương? Tôi có một tập tin .sql với câu lệnh sql. Nó có tất cả các TẠO TẠO và chèn dữ liệu. Tôi chỉ cần một cách để gửi SQL đó vào Postgres trên Heroku. –

+0

Có, bạn có thể sử dụng PgAdmin để kết nối từ xa với cơ sở dữ liệu Heroku của bạn và dán mã SQL của bạn vào đó. Tuy nhiên, tôi khuyên bạn nên thiết lập một cơ sở dữ liệu cục bộ để bạn có thể làm theo nguyên tắc 12 yếu tố và có thể gỡ lỗi cục bộ: http://12factor.net/ – dankohn

+0

@Jeff - hãy xem câu trả lời của tôi, bạn không cần phải có một DB cục bộ hoặc kết nối với PgAdmin, bạn có thể dễ dàng thực hiện nó thông qua dòng lệnh. – SergeyB

9

Making tập tin sao lưu:

pg_dump -U USERNAME DATABASE --no-owner --no-acl -f backup.sql 

Khôi phục từ file sql để Heroku:

heroku pg:psql --app APPNAME < backup.sql 

(Bonus) Xóa tất cả các bảng từ cơ sở dữ liệu ứng dụng Heroku (ví dụ):

heroku pg:reset --app APPNAME HEROKU_POSTGRESQL_ROSE 

tải DATABASE_URL từ po bảng điều khiển sgresql heroku (dòng psql)

+2

Cảm ơn! Ở khắp mọi nơi khác tôi nhìn chỉ ra tôi phải tải lên S3. – sventechie

+1

---> Kết nối với DATABASE_URL Đầu vào là một kết xuất định dạng tùy chỉnh PostgreSQL. Sử dụng ứng dụng khách dòng lệnh pg_restore để khôi phục kết xuất này vào cơ sở dữ liệu. – Pak

Các vấn đề liên quan