programing

heroku에서 db를 다운로드하려면 어떻게 해야 합니까?

lovejava 2023. 9. 11. 21:19

heroku에서 db를 다운로드하려면 어떻게 해야 합니까?

heroku를 사용하고 있는데 앱(heroku)에서 데이터베이스를 다운로드하여 변경할 수 있도록 하고 싶습니다. pg백업을 설치했지만 사용하고 있습니다.heroku pgbackups:url.downloads 파일

postgresql 파일을 다운로드하거나 .dump를 postgresql 파일로 변환하려면 어떻게 해야 합니까?

Heroku의 pg백업을 사용하는 경우(사용해야 할 경우):

$ heroku pg:backups capture
$ curl -o latest.dump `heroku pg:backups public-url`

다음과 같이 포스트그레스 DB로 번역합니다.

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump

https://devcenter.heroku.com/articles/heroku-postgres-import-export 참조

CLI에 이런 명령이 있습니다.heroku db:pull당신을 위해 이렇게 해 줄 겁니다.db:pull당신은 좀 천천히 생각할 수 있으므로 다음 옵션을 사용하는 것이 더 나을 수 있습니다.

복잡한 후처리 데이터 유형(hstore, array 등)을 사용하는 경우 기본적으로 Heroku에 대한 백업을 수행하고 로컬로 복원하는 pgtransfer 플러그인 https://github.com/ddollar/heroku-pg-transfer 을 사용해야 합니다.

업데이트:db:pull그리고.db:push감가 상각되었으므로 로 교체해야 합니다.pg:pull그리고.pg:push- 자세한 내용은 https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull 에서 확인할 수 있습니다.

설명서에서 제안한 첫 번째 방법은 훨씬 더 쉽게 풀/푸쉬할 수 있다는 것을 발견했습니다.암호나 사용자 이름이 필요 없습니다.

pg: 삭제

pg:pull을 사용하여 Heroku Postgres 데이터베이스에서 로컬 컴퓨터의 데이터베이스로 원격 데이터를 끌어 올 수 있습니다.명령어는 다음과 같습니다.

$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi

이 명령은 "mylocaldb"라는 이름의 새 로컬 데이터베이스를 만든 다음 데이터베이스에서 데이터를 꺼냅니다.DATABASE_URL앱 "http://http://http:실수로 인한 데이터 덮어쓰기 및 손실을 방지하려면 로컬 데이터베이스가 존재하지 않아야 합니다.계속하기 전에 이미 존재하는 로컬 데이터베이스를 삭제하라는 메시지가 나타납니다.

처음에는 오류가 있었습니다./bin/sh: createdb: command not found; 이 SO 게시물을 보고 풀었습니다.


문서에도 설명되어 있는 대안은 다음과 같습니다(아직 시도해 보지 않았습니다).

Heroku Postgres 데이터베이스에서 데이터를 내보내려면 새 백업을 만들고 다운로드합니다.

$ heroku pg:backups:capture

$ heroku pg:backups:download

출처: PG 백업을 사용하여 Heroku Postgres 데이터베이스 가져오기내보내기

Heroku Postgres 데이터베이스에서 데이터를 내보내려면 아래 단계를 따릅니다.

  1. heroku 로그인
  2. APP-> settings-> reveal config 변수로 이동
  3. DATABASE_URL 복사
  4. 달려.pg_dump --DATABASE_URL_COPIED_IN_STEP_3 > database_dump_file

postgresql 파일 또는 덤프 파일의 경우 postgres addon 인터페이스에서 직접 다운로드할 수 있습니다.

로컬 서버에서 데이터베이스를 다운로드하고 복제하는 가장 쉬운 방법은 다음과 같습니다.

 **PGUSER**=LOCAL_USER_NAME PGPASSWORD=LOCAL_PASSWORD heroku pg:pull --app APP_NAME HEROKU_POSTGRESQL_DB_NAME LOCAL_DB_NAME

자세한 정보를 보려면 이 문서를 살펴보십시오: https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull

이것이 제가 즐겨 쓰는 대본입니다.

namespace :heroku do

  desc "Import most recent database dump"
  task :import_from_prod => :environment do
    puts 'heroku run pg:backups capture --app APPNAME'
    restore_backup 'APPNAME'
  end

  def path_to_heroku
    ['/usr/local/heroku/bin/heroku', '/usr/local/bin/heroku'].detect {|path| File.exists?(path)}
  end

  def heroku(command, site)
    `GEM_HOME='' BUNDLE_GEMFILE='' GEM_PATH='' RUBYOPT='' #{path_to_heroku} #{command} -a #{site}`
  end

  def restore_backup(site = 'APPNAME')
    dump_file = "#{Rails.root}/tmp/postgres.dump"
    unless File.exists?(dump_file)
      pgbackups_url = heroku('pg:backups public-url -q', site).chomp
      puts "curl -o #{dump_file} #{pgbackups_url}"
      system "curl -o #{dump_file} '#{pgbackups_url}'"
    end
    database_config = YAML.load(File.open("#{Rails.root}/config/database.yml")).with_indifferent_access
    dev_db = database_config[Rails.env]
    system "pg_restore -d #{dev_db[:database]} -c #{dump_file}".gsub(/\s+/,' ')
    puts
    puts "'rm #{dump_file}' to redownload postgres dump."
    puts "Done!"
  end
end

나에겐 간단한 것.heroku pg:pull DATABASE local-db-name -a app-name일했다.

◦: 것이 아니라 "라는합니다.데이터베이스의 이름이나 화려한 것이 아니라 단지 "DATABASE"라는 단어를 의미합니다.rake db:drop바로 전에, 그것은 당신의 로컬 데이터베이스 이름을 보여줄 것이고, 그것은ABC_development.

언급URL : https://stackoverflow.com/questions/17022571/how-can-i-download-db-from-heroku