복붙노트

[SQL] 어떻게 포스트 그레스 데이터베이스로의 PostgreSQL 덤프 파일을 복원?

SQL

어떻게 포스트 그레스 데이터베이스로의 PostgreSQL 덤프 파일을 복원?

나는 .SQL 확장 (실제로는 일반 텍스트 SQL 파일입니다)와 덤프 파일이 있습니다. 내가 만든 데이터베이스로 복원하고자합니다. 나는 pgAdmin III를 사용하고, 나는 그 "복원 마법사"를 사용하는 경우이 버튼을 선택 "복원"을하지 않습니다. 대신은 .backup 파일 확장자를 기대하고있다.

나는 덤프를 복원 쉘에게 명령을 사용했지만, 그것은 여전히 ​​작동하지 않았다.

나는이에 초보자입니다. 누군가가 나를 도울 수 있다면 나는 의무가 될 것이다.

newTestDB에 앉아있는 동안 나는 포스트 그레스의 쉘 SQL 창에 다음 명령을 사용했다.

newTestDB-# \i E:\db-rbl-restore-20120511_Dump-20120514.sql

아직 ( "사용 권한이 거부되었습니다") 같은 오류가 있습니다.

권한을 상승 후 그냥 나에게 PostgreSQL의 기본 테이블을 보여줍니다

      List of tablespaces
Name       |  Owner   | Location
-----------+----------+----------
pg_default | postgres |
pg_global  | postgres |

(2 rows)

나는 SQL 파일에서 데이터베이스를 가져 오기 / 복원을 위해 무엇을 해야할지하지 않습니다.

해결법

  1. ==============================

    1.보통 psql의 도구 : 당신은 일반적인 대답은 귀하의 백업이 만들어진 방법을 언급하지 않았다.

    보통 psql의 도구 : 당신은 일반적인 대답은 귀하의 백업이 만들어진 방법을 언급하지 않았다.

    pg_dump의 덤프에 지시 된 내용에 따라 SQL 파일은 SQL 명령의 다른 세트를 가질 수 있습니다. 이 복사에는 SQL 명령을 수 없습니다 (또는 삽입하면됩니다 예를 들어, 당신은 --clean 및 사용하여 데이터베이스를 덤프 pg_dump의 지시 경우 --schema을 전용, 그 덤프에서 데이터베이스를 복원 할 수 있기를 기대 할 수 없습니다 --inserts는 테이블)의 실제 데이터를 사용한다. 그런 덤프는 DDL SQL 명령을 포함하고, 스키마가 아니라 실제 데이터를 다시 할 수있을 것입니다.

    일반적인 SQL 덤프는 psql를 복원한다 :

    psql (connection options here) database  < yourbackup.sql
    

    또는 대안 적 psql의 세션에서,

    psql (connection options here) database
    database=# \i /path/to/yourbackup.sql
    

    일반 SQL 파일 만 압축 파일이 아닙니다 pg_dump의 -Fc ( "사용자 지정 형식")로 만든 백업의 경우, 당신은 pg_restore의 도구를 사용해야합니다.

    이 같은 유닉스 A의 작업하는 경우,이 시도 :

    man psql
    man pg_dump
    man pg_restore
    

    그렇지 않으면, html로 문서를보십시오. 행운을 빕니다!

  2. ==============================

    2.psql의 명령 줄에서 귀하의 시도에 대한 문제는 슬래시의 방향 :

    psql의 명령 줄에서 귀하의 시도에 대한 문제는 슬래시의 방향 :

    newTestDB-# /i E:\db-rbl-restore-20120511_Dump-20120514.sql   # incorrect
    newTestDB-# \i E:/db-rbl-restore-20120511_Dump-20120514.sql   # correct
    

    대신 \ 난을 했어야 있도록 명확하게하기 위해, psql의 명령은 백 슬래시로 시작합니다. 무엇 당신의 오타의 결과로 일어난 일은 그 psql를 무시 모든 DB를 다음에 할 일이, 그리고 \ DB 테이블 스페이스 목록에 대한 psql의 명령으로 발생하는 \ 첫 번째, 출력이 테이블의 목록이었다 따라서 이유를 발견 할 때까지입니다 . 당신이 말한대로 그것은 "의 PostgreSQL 기본 테이블"로 나열되지 않았습니다.

    또한, 그 psql의가 (따라서 이것이 이해 될 것이다 Windows에서)에 관계없이 OS의 슬래시를 사용하여를 단락 디렉토리에 파일 경로 인수를 기대 보인다.

    그것은 "상승 권한"에서 당신의 시도는 실행하려고 명령의 결과는 전혀 관련이 없다고 주목할 가치가있다. 또한, 오류 추정되는 "거부 권한을"원인을 언급하지 않았다.

    마지막으로, 덤프 파일의 확장자는 당신도 확장이 필요하지 않습니다 사실 중요하지 않습니다. 백업 파일 이름을 선택할 때 실제로, pgAdmin은 .backup 확장자를 제안,하지만 당신은 실제로 당신이 전혀 확장자가없는 포함하여, 다시 원하는대로 그것을 만들 수 있습니다. 문제는, 그래서 그냥 psql의 \ 내가 명령을 사용 pgAdmin는 "사용자 지정 또는 타르"또는 "디렉토리"덤프 (적어도이 응용 프로그램의 MAC OS X 버전의 경우)의 "복원"는 허용 할 것이다 위에서 도시.

  3. ==============================

    3.pg_restore의 명령을 사용해서 당신은 포스트 그레스 데이터베이스를 복원 할 수 있습니다

    pg_restore의 명령을 사용해서 당신은 포스트 그레스 데이터베이스를 복원 할 수 있습니다

    먼저 개방 말단 형

    sudo su postgres
    

    새 데이터베이스 만들기

    CREATEDB [데이터베이스 이름] -O [소유자]

    createdb test_db [-O openerp]
    

    pg_restore의 -d [데이터베이스 이름] [덤프 파일의 경로]

    pg_restore -d test_db /home/sagar/Download/sample_dbump
    

    데이터베이스 복구가 완료 될 때까지 기다립니다.

    당신이 chmod를 명령을 적용 할 수 있습니다 그래서에 대한 액세스를 실행 읽고해야하는 덤프 파일 쓰기를 기억

  4. ==============================

    4.터미널의 개봉.

    터미널의 개봉.

    다음 명령을 사용하여 데이터베이스를 2.backup

    당신의 포스트 그레스 빈 - /opt/PostgreSQL/9.1/bin/

    소스 데이터베이스 서버 - 192.168.1.111

    백업 파일의 위치와 이름 - /home/dinesh/db/mydb.backup

    소스 DB 이름 -하여 MyDatabase

    /opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111'--port 5432 --username "포스트 그레스"사용자 정의 --format --no-암호가 --blobs --file "/ 홈 / 네쉬 / DB /mydb.backup ""하여 MyDatabase "

    목적지에 3.restore의 mydb.backup 파일.

    대상 서버 - 로컬 호스트

    대상 데이터베이스 이름 -하여 MyDatabase

    백업을 복원하기위한 데이터베이스를 만듭니다.

    /opt/PostgreSQL/9.1/bin/psql -h 'localhost를'-p 5432 -U 포스트 그레스 -c "MyDatabase 데이터베이스 만들기"

    백업을 복원합니다.

    /opt/PostgreSQL/9.1/bin/pg_restore --host 'localhost를'--port 5432 --username "포스트 그레스"--dbname는 "하여 MyDatabase"--no-암호 --clean "/ 홈 / 네쉬 / DB / MYDB. 지원"

  5. ==============================

    5.MartinP 및 user664833에서 조언을 결합, 나 또한 일에 그것을 얻을 수 있었다. 당신이 테이블에 관리자 또는 CRUD 권한이 있어야하고, DB에 어쩌면 또한 관리자 (해야하므로주의해야한다는 플러그인을 선택을 통해 pgAdmin GUI 도구에서 psql의 진입하고 ... PSQL 콘솔은 psql의 세션에 대한 인증 및 권한 레벨을 설정하지 않습니다 )이에 확실히 알고있다. psql의 콘솔에서 다음 명령이 형태를 취할 것입니다 :

    MartinP 및 user664833에서 조언을 결합, 나 또한 일에 그것을 얻을 수 있었다. 당신이 테이블에 관리자 또는 CRUD 권한이 있어야하고, DB에 어쩌면 또한 관리자 (해야하므로주의해야한다는 플러그인을 선택을 통해 pgAdmin GUI 도구에서 psql의 진입하고 ... PSQL 콘솔은 psql의 세션에 대한 인증 및 권한 레벨을 설정하지 않습니다 )이에 확실히 알고있다. psql의 콘솔에서 다음 명령이 형태를 취할 것입니다 :

    postgres=# \i driveletter:/folder_path/backupfilename.backup
    

    여기서 포스트 그레스 = # 명령의 일부가 아닌, psql의 프롬프트입니다.

    당신은 또한 실행되었지만 오류로보고받을 파일의 "ALTER TABLE ..."명령 같은 것들을 얻을 수 있도록 .backup 파일, 테이블을 만드는 데 사용되는 명령이 포함됩니다. 나는 당신이 항상 복원을 실행하기 전에이 명령을 삭제할 수 있다고 생각하지만, 이러한하지 가능성이 실패 할 데이터의 복원 원인이됩니다 당신은 거기에 보관 아마 미안보다 더 안전 해요. 그러나 항상 거기에 실제로 가지고 당신이 resore하고 싶은 데이터를 할 수 확인하십시오. (죄송이 사람에게 조언을 애용 것 같아,하지만 어떤 사람들이 물건에왔다 얼마나 중요한 사람에게 일어나지 않을 수있는 감독의 경우 - 등 동료, 전화,에서 순간의 혼란, 그리고 쉽게 나는 이전에 내 경력에서 다른 데이터베이스를 사용하여 그것을 자신을 수행하고 응답 데이터가 실제로 복원하지있어 않았다 "아이고, 내가 왜?이 쿼리에서 모든 데이터 등을보고하지 않다"궁금했다.이 단계를 잊지 난 그냥 시도 2 ​​시간 낭비 존재하지 않는 의심 할 수 버그 사냥에.)

  6. ==============================

    6.당신은 당신의 스키마 소유자가 덤프를 복원 할 수있는 데이터베이스 레벨에서 권한을 설정해야 할 수도 있습니다.

    당신은 당신의 스키마 소유자가 덤프를 복원 할 수있는 데이터베이스 레벨에서 권한을 설정해야 할 수도 있습니다.

  7. ==============================

    7.나는 (좋아하는 위의 모양)이 psql.exe 적어도 창문에 슬래시 방향에 매우 까다 롭고입니다 찾을 수 있습니다.

    나는 (좋아하는 위의 모양)이 psql.exe 적어도 창문에 슬래시 방향에 매우 까다 롭고입니다 찾을 수 있습니다.

    다음은 예입니다. cmd를 창에서 :

    C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres
    psql (9.2.4)
    Type "help" for help.
    
    postgres=# \i c:\temp\try1.sql    
    c:: Permission denied
    postgres=# \i c:/temp/try1.sql
    CREATE TABLE
    postgres=#
    

    당신은 내가 \ 내가 전화에서 "정상"윈도우 슬래시를 사용할 때 실패 볼 수 있습니다. 당신은 예를 들어, psql.exe에 입력 PARAMS로 전달할 경우 모두 슬래시 스타일 작동 :

    C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres -f c:\TEMP\try1.sql
    CREATE TABLE
    
    C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres -f c:/TEMP/try1.sql
    CREATE TABLE
    
    C:\Program Files\PostgreSQL\9.2\bin>
    
  8. from https://stackoverflow.com/questions/10761073/how-to-restore-postgresql-dump-file-into-postgres-databases by cc-by-sa and MIT license