복붙노트

[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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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
    
  6. 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