sql을 복원하는 동안 psql 잘못된 명령 \N
덤프 파일을 복원하려고 하는데 오류가 발생했습니다.
psql:psit.sql:27485: invalid command \N
해결책이 있습니까?제가 검색해봤지만, 명확한 답변을 받지 못했습니다.
는 포트그스사용을 사용합니다.\N
NULL 값의 대체 기호로 사용됩니다. 그모든 psql 은백슬시래로 합니다.\
로드가때 이러한 메시지를 수 .복사 문이 실패해도 덤프 로드가 계속되는 경우 이러한 메시지를 받을 수 있습니다.이 메시지는 잘못된 경보입니다.복사 문이 실패한 실제 이유를 보려면 이 오류 전에 모든 행을 검색해야 합니다.
psql을 "stop on first error" 모드로 전환하여 오류를 찾을 수 있습니다.
psql -v ON_ERROR_STOP=1
바이너리 pg_dump에서 복원할 때 동일한 오류 메시지가 표시됩니다.전 그저 덤프를 복구하고 완전히 피하곤 했습니다.\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
이전 게시물인 것은 알지만 다른 솔루션을 발견했습니다. pg_dump에서 동일한 오류가 발생한 새 버전에 postgis가 설치되지 않았습니다.
--inserts 매개 변수와 함께 INSERT 문을 사용하여 덤프를 생성할 수 있습니다.
저는 과거에도 이 오류에 부딪힌 적이 있습니다.Pavel이 맞습니다. 일반적으로 pg_restore에 의해 생성된 스크립트의 일부가 실패하고 있음을 나타냅니다.모든 "/N" 오류 때문에 출력 맨 위에 실제 문제가 표시되지 않습니다.제안합니다.
- 테이블 ( 단작테블예삽입이은일예▁((▁a:):
pg_restore --table=orders full_database.dump > orders.dump
) - 레코드가합니다. /가 으로 로드되는 행인지 했습니다.
orders.dump
여러 레코드를 삭제합니다.) - 표준 출력을 보고 문제를 발견하면 언제든지 테이블을 떨어뜨리고 다시 로드할 수 있습니다.
저의 경우, "hstore" 확장자가 아직 설치되지 않았기 때문에 맨 위에서 스크립트가 실패했습니다.목적지 데이터베이스에 hstore를 설치하고 다시 사업을 시작했습니다.
오늘도 같은 일이 저에게 일어났습니다.--inserts 명령어로 덤프하여 문제를 처리했습니다.
제가 하는 일은:
pg_inters(삽입자 포함):
pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql
psql(덤핑된 파일 복원)
psql "dbname=dbnamehere options=--search_path=schemaname" --host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt
참고-1) 출력 파일을 추가하면 가져오기 속도가 빨라집니다.
주-2) psql로 가져오기 전에 이름과 열이 정확히 같은 테이블을 만드는 것을 잊지 마십시오.
postgresql-(사용자 버전)-postgis-script 설치
제 해결책은 다음과 같습니다.
psql -U your_user your_db < your.file.here.sql 2>&1|more
이런 식으로 나는 오류 메시지를 읽을 수 있습니다.
이것이 누구에게나 도움이 되길 바랍니다.
최근의 경험으로 볼 때, 실제 문제가 이스케이프 문자나 새 줄과 관련이 없을 때 이 오류가 발생할 수 있습니다.제 경우에는 데이터베이스 A에서 다음을 사용하여 덤프를 생성했습니다.
pg_dump -a -t table_name > dump.sql
.
psql < dump.sql
한 후 (물론적절한환업변한트후이데를수경후)▁(▁updating한(▁the트이
제가 마침내 알아낸 것은 그 쓰레기장이 비록 그것이data-only
(그)-a
테이블 구조가 명시적으로 덤프의 일부가 되지 않도록 하기 위한 옵션)은 스키마에 따라 다릅니다.즉, 수동으로 덤프를 수정하지 않으면 생성된 덤프를 사용할 수 없습니다.schema1.table_name
를 늘리다schema2.table_name
덤프를 수동으로 수정하는 것은 쉬웠고 스키마는 처음 15줄 정도로 지정되었습니다.
경우 은 대분의경솔설것입다니를 입니다.postgres-contrib
꾸러미
내 결심을 덧붙이자면, 누군가에게 도움이 될 수도 있습니다.저는 postgis를 설치했지만 오류가 해결되지 않았습니다.--inserts 옵션은 수천 개의 행이 있는 테이블이 있는 큰 스키마를 복사해야 했기 때문에 실행 가능하지 않았습니다.동일한 데이터베이스의 경우 pg_dump 및 psql(복원)이 Mac에서 실행되었을 때 이 문제가 발생하지 않았습니다.그러나 pg_dump가 Linux 시스템에서 실행될 때 문제가 발생했습니다. dump 파일이 mac에 복사되어 복원을 시도했습니다.그래서 VSCode에서 덤프 파일을 열었습니다.비정상적인 회선 종료기를 감지하고 제거 옵션을 제공했습니다.그런 다음 잘못된 명령 \N 오류 없이 덤프 파일 복원이 실행되었습니다.
저도 같은 문제가 있었어요, 새로운 데이터베이스를 만들고,invalid command \N
psql을 하여 복원합니다.이전 데이터베이스와 동일한 테이블스페이스를 설정하여 해결했습니다.
예를 들어 이전 데이터베이스 백업에 테이블스페이스 "pg_default"가 있는데 새 데이터베이스와 동일한 테이블스페이스를 정의했는데 위 오류가 사라졌습니다!
소스 데이터베이스와 다른 것은 인코딩과 LOCAL이었습니다.일단 대상 DB를 삭제하고 다시 생성하면 정상적으로 작동합니다.
저의 경우 문제는 대상 컴퓨터의 디스크 공간 부족이었습니다.로컬 스토리지를 늘리는 것만으로 해결할 수 있었습니다.
이것이 누군가에게 도움이 되기를 바랍니다 ;)
postgre를 사용하는 는 postgre를 사용합니다.12의 했습니다.invalid command \N
디스크 공간 증가로 인한 오류입니다.디스크 공간 부족으로 인해 오류가 발생했습니다.데이터가 저장될 파일 시스템을 보면 디스크 공간이 부족한지 알 수 있습니다.df -h
산출량.파일 시스템/마운트가 100% 사용되는 경우 다음과 같은 작업을 수행한 후psql -f db.out postgres
사용 가능한 디스크 공간을 늘려야 할 경우 https://www.postgresql.org/docs/current/static/app-pg-dumpall.html) 을 참조하십시오.
저는 이 모든 예를 따랐고, 이들은 모두 실패했고, 우리가 이야기하고 있는 오류는 다음과 같습니다.
Postgres에서 한 데이터베이스에서 다른 데이터베이스로 표 복사
-C를 사용한 구문이 효과적이었습니다. 여기를 참조하십시오.
pg_dump -C -t tableName "postgres://$User:$Password@$Host:$Port/$DBName" | psql "postgres://$User:$Password@$Host:$Port/$DBName"
또한 둘 사이에 스키마가 다를 경우 테이블 복사본이 작동하려면 하나의 dB 스키마를 다른 dB 스키마와 일치하도록 변경해야 합니다. 예를 들어 다음과 같습니다.
DROP SCHEMA public;
ALTER SCHEMA originalDBSchema RENAME TO public;
백업을 만든 후 바로 복원하려고 시도한 후 Windows에서 이 오류가 발생했습니다.알고 보니 문제는, 제가 다음을 사용하여 파일을 작성했다는 것입니다.pg_dump ... > filename
출력이 손상되는 것 같습니다.대신에, 저는 다음을 사용하여 파일을 쓸 필요가 있었습니다.pg_dump ... -f filename
그런 식으로 만든 백업 파일이 있으면 문제 없이 복원됩니다.
테이블의 열과 백업 파일의 열이 적합한지 확인합니다.
언급URL : https://stackoverflow.com/questions/20427689/psql-invalid-command-n-while-restore-sql
'programing' 카테고리의 다른 글
Bash 스크립트에서 숫자를 추가하려면 어떻게 해야 합니까? (0) | 2023.05.06 |
---|---|
Windows용 Vim - 파일을 저장하고 종료하려면 무엇을 입력해야 합니까? (0) | 2023.05.06 |
작성자를 위해 모든 지점의 로그를 한 번에 가져오는 방법은 무엇입니까? (0) | 2023.05.06 |
'batch3'이(가) 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. (0) | 2023.05.06 |
if, ellif, else 문 문제가 Bash에 있습니다. (0) | 2023.05.06 |