[sql] SQL을 복원하는 동안 psql 잘못된 명령 \ N

덤프 파일을 복원하려고하는데 오류가 발생했습니다.

psql:psit.sql:27485: invalid command \N

해결책이 있습니까? 나는 검색했지만 명확한 대답을 얻지 못했습니다.



답변

Postgres는 “\ N”을 NULL 값의 대체 기호로 사용합니다. 그러나 모든 psql 명령은 백 슬래시 “\”기호로 시작합니다. 따라서 copy 문이 실패했을 때이 메시지를 얻을 수 있지만 덤프로드는 계속됩니다. 이 메시지는 잘못된 경고 일뿐입니다. COPY 문이 실패하는 이유를 찾기 전에 행을 검색해야합니다.

psql을 “첫 번째 오류 발생시 중지”모드로 전환하고 오류를 찾을 수 있습니다.

psql -v ON_ERROR_STOP=1


답변

이진 덤프에서 복원하려고 할 때 동일한 오류 메시지가 나타납니다. 나는 단순히 pg_restore덤프를 복원하고 \N오류를 완전히 피하는 데 사용 했다.

pg_restore -c -F t -f your.backup.tar

스위치 설명 :

-f, --file=FILENAME output file name
-F, --format=c|d|t backup file format (should be automatic)
-c, --clean clean (drop) database objects before recreating


답변

이 게시물은 오래된 게시물이지만 다른 솔루션을 발견했습니다. postgis가 새 버전에 설치되지 않아 pg_dump에서 동일한 오류가 발생했습니다.


답변

과거 에도이 오류가 발생했습니다. Pavel은 정확합니다. 일반적으로 pg_restore로 작성된 스크립트에서 무언가 실패했음을 나타냅니다. 모든 “/ N”오류로 인해 출력의 맨 위에 실제 문제가 표시되지 않습니다. 나는 제안한다 :

  1. 하나의 작은 테이블에 삽입 (예 pg_restore
    --table=orders full_database.dump > orders.dump
    )
  2. 작은 것이 없으면 복원 스크립트에서 많은 레코드를 삭제하십시오. ./ 가로 드 될 마지막 행인지 확인했습니다 (예 : orders.dump레코드를 열고 삭제)
  3. 표준 출력을보고 문제를 발견하면 언제든지 테이블을 삭제하고 다시로드 할 수 있습니다

필자의 경우 아직 “hstore”확장명을 설치하지 않았으므로 스크립트가 맨 위에 실패했습니다. 대상 데이터베이스에 hstore를 설치했고 업무를 다시 시작했습니다.


답변

–inserts 매개 변수와 함께 INSERTS 문을 사용하여 덤프를 생성 할 수 있습니다.


답변

postgresql- (귀하의 버전) -postgis-scripts 설치


답변

오늘도 같은 일이 일어났습니다. –inserts 명령으로 덤프하여 문제를 처리했습니다.

내가하는 일은 :

1) 인서트가있는 pg_dump :

pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql

2) psql (덤프 된 파일 복원)

psql "dbname=dbnamehere options=--search_path=schemaname" --host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt

참고 1) 출력 파일을 추가하면 가져 오기 속도가 빨라져야합니다.

주 2) psql로 가져 오기 전에 정확히 동일한 이름과 열로 테이블을 작성하는 것을 잊지 마십시오.