[SQL] 어떻게 Heroku가에 일반 텍스트 포스트 그레스 데이터베이스 덤프를받을 수 있나요?
SQL어떻게 Heroku가에 일반 텍스트 포스트 그레스 데이터베이스 덤프를받을 수 있나요?
나는 내 로컬 테스트 환경 내 생산 데이터의 복사본을 넣을 수 있도록 인해 Heroku가 (9.1) 내 로컬 설치 (8.4)에 내 포스트 그레스 데이터베이스의 버전 호환성에 나는 일반 텍스트 SQL 데이터베이스 덤프 파일이 필요합니다.
내가 pg_dump의를 사용하여 덤프를 만들 수없는 대신에만이 작업을 수행 할 수 있습니다에게 Heroku에 보인다
$ heroku pgbackups:capture
$ curl -o my_dump_file.dump `heroku pgbackups:url`
... 이것은 나에게 "사용자 정의 데이터베이스 덤프 형식"나는이 작업을 수행 할 수없는 오전 있도록 없습니다 "일반 텍스트 형식"을 제공합니다 :
$ psql -d my_local_database -f my_dump_file.sql
해결법
-
==============================
1.당신은 당신의 Heroku가 데이터베이스에서 직접 자신의 pg_dump의를 만들 수 있습니다.
당신은 당신의 Heroku가 데이터베이스에서 직접 자신의 pg_dump의를 만들 수 있습니다.
GET DATABASE_URL : 첫째, Heroku가의 설정을 사용하여 포스트 그레스 문자열을 얻을.
Heroku가 포스트 그레스의 URL을 찾습니 (: HEROKU_POSTGRESQL_RED_URL : 포스트 그레스 : 예 // user3123 : passkja83kd8@ec2-117-21-174-214.compute-1.amazonaws.com : 6212 / db982398) 형식이 포스트 그레스입니다 : // < 사용자 이름> : <암호> @ <여기서 host_name> : <포트> /
. 다음으로, 명령 줄에서이 작업을 실행 :
pg_dump --host=<host_name> --port=<port> --username=<username> --password --dbname=<dbname> > output.sql
단말기는 암호를 요청을 실행하고 output.sql로 덤프합니다.
그런 다음 그것을 가져옵니다
psql -d my_local_database -f output.sql
-
==============================
2.Heroku가의 PGBackups 실제로 사용은 뒤에서 pg_dump의, 그리고 "사용자 정의 형식은"실제로 pg_dump의의 사용자 정의 형식 (-Fc 매개 변수),하지 Heroku가 자신의 사용자 정의 형식입니다.
Heroku가의 PGBackups 실제로 사용은 뒤에서 pg_dump의, 그리고 "사용자 정의 형식은"실제로 pg_dump의의 사용자 정의 형식 (-Fc 매개 변수),하지 Heroku가 자신의 사용자 정의 형식입니다.
직접 다른 데이터베이스로 Heroku가 백업을 복원 포스트 그레스의 일부입니다 pg_restore에를, 사용할 수있는이 수단 :
pg_restore -d mydatabase my_dump_file.dump
또한, 당신은 당신이 SQL 파일 그런 식으로 Heroku가 백업을 설정할 수 있도록, 그것은, 표준 출력에 SQL 문을 인쇄 할 수 있습니다에 복원 할 데이터베이스를 지정하지 않고 pg_restore에를 호출하는 경우 :
pg_restore my_dump_file.dump > sql_statements.sql
-
==============================
3.훨씬 간단한 방법이있다, 당신이 DATABASE_URL 사용자 환경에서 구성되어 가정 :
훨씬 간단한 방법이있다, 당신이 DATABASE_URL 사용자 환경에서 구성되어 가정 :
heroku run 'pg_dump $DATABASE_URL' > my_database.sql
이것은, 로컬 파일에 용기 및 파이프에 my_database.sql을 내용을 pg_dump의 실행됩니다. 단일 따옴표가 중요하다. 당신이 (모든 또는 따옴표) 따옴표를 사용하는 경우, DATABASE_URL 오히려 컨테이너보다 C로 평가됩니다.
전체 목적은 어쨌든 로컬 데이터베이스에 내용을로드하는 경우, 당신은 직선이 아니라 파이프를 수도 :
createdb myapp_devel # start with an empty database heroku run 'pg_dump -xO $DATABASE_URL' | psql myapp_devel
-xO의 추가는 아마 당신의 로컬 데이터베이스 서버에 적용되지 않습니다 GRANT, REVOKE 및 ALTER OWNER 문을 덤핑 방지 할 수 있습니다. 당신의 COPY 명령의 오류 오류로 실패 할 경우 데이터에서 발견 된 문자 캐리지 리턴 (광산했다),이 대답을 참조하십시오.
그것은이 질문은 원래 질문 할 때 2 년 반 전에 작동하고 있지 않습니다를 확실히 가능하지만, 쉽게 할 수있는 방법을 찾고있는 사람들을 위해 당신에게 Heroku 포스트 그레스 데이터베이스의 덤프를 얻을이 나타납니다이 작업을 수행 할 수있는 가장 간단한 방법이 될 수 있습니다 오늘.
-
==============================
4.나 같은 사람들이 2020 년이 문제에 그 우연히 발견을 위해 :
나 같은 사람들이 2020 년이 문제에 그 우연히 발견을 위해 :
heroku pg:backups:capture -a app-name heroku pg:backups:download -a app-name
이 도구는 실제로 캡처 후 사용하는 명령을 무엇을 말할 것이다. 당신의 latest.dump 파일에서 SQL을 얻으려면 :
pg_restore -f sqldump.sql latest.dump
그리고 그게 다야.
-
==============================
5.
Heroku pg:backups:capture Heroku pg:backups:download
https://devcenter.heroku.com/articles/heroku-postgres-import-export에서 촬영. 지금 당신은 바이너리 파일이 있습니다. 일반 텍스트 형식으로 파일을 구하려면, 다음 날 위해 일했습니다. 참고 : PostgreSQL을 설치해야합니다.
pg_restore latest.dump > latest.sql
from https://stackoverflow.com/questions/22887524/how-can-i-get-a-plain-text-postgres-database-dump-on-heroku by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 일반적으로, 데이터베이스의 모든 테이블에는 PK로 사용할 정체성 필드를해야합니까? (0) | 2020.07.22 |
---|---|
[SQL] 테이블을 삭제할 수 없습니다 : 외부 키 제약이 실패 (0) | 2020.07.22 |
[SQL] 그것은 MySQL의 뷰에 데이터를 삽입 할 수 있습니까? (0) | 2020.07.22 |
[SQL] SQL Server를 사용하여 많은 관계로 하나 만들기 (0) | 2020.07.22 |
[SQL] 나는 구조체로 데이터베이스 행을 변환하려면 어떻게 (0) | 2020.07.21 |