Próbuję przywrócić plik zrzutu, ale spowodowało to błąd:
psql:psit.sql:27485: invalid command \N
Czy jest jakieś rozwiązanie? Szukałem, ale nie otrzymałem jasnej odpowiedzi.
sql
postgresql
dump
Vivek Vikranth
źródło
źródło
create table...
powiedzie się na starcie, ale ładowanie jest kontynuowane.(pg_restore ... | psql ...) 2>&1 | less
Otrzymałem ten sam komunikat o błędzie podczas próby przywrócenia z pliku binarnego pg_dump. Po prostu
pg_restore
przywracałem swój zrzut i całkowicie unikałem\N
błędów, nppg_restore -c -F t -f your.backup.tar
Objaśnienie przełączników:
-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
źródło
Wiem, że to stary post, ale natknąłem się na inne rozwiązanie: postgis nie był zainstalowany w mojej nowej wersji, co spowodowało ten sam błąd na pg_dump
źródło
Również w przeszłości spotkałem się z tym błędem. Paweł ma rację, zwykle jest to znak, że coś w skrypcie stworzonym przez pg_restore nie działa. Z powodu wszystkich błędów „/ N” nie widzisz prawdziwego problemu na samej górze wyniku. Sugeruję:
pg_restore --table=orders full_database.dump > orders.dump
)orders.dump
i usuń kilka rekordów)W moim przypadku nie miałem jeszcze zainstalowanego rozszerzenia „hstore”, więc skrypt na samej górze zawodził. Zainstalowałem hstore w docelowej bazie danych i wróciłem do biznesu.
źródło
Możesz wygenerować zrzut za pomocą instrukcji INSERTS, z parametrem --inserts.
źródło
Zainstaluj postgresql- (twoja wersja) -postgis-scripts
źródło
To samo spotkało mnie dzisiaj. Rozwiązałem problem, zrzucając polecenie --inserts.
Co robię to:
1) pg_dump z wstawkami:
pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql
2) psql (przywróć zrzucony plik)
psql "dbname=dbnamehere options=--search_path=schemaname" --host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt
Uwaga-1) Upewnij się, że dodanie pliku wyjściowego przyspieszy import.
Uwaga-2) Nie zapomnij utworzyć tabeli z dokładnie taką samą nazwą i kolumnami przed zaimportowaniem za pomocą psql.
źródło
Z mojego niedawnego doświadczenia wynika, że ten błąd może wystąpić, gdy prawdziwy problem nie ma nic wspólnego ze znakami ucieczki lub znakami nowej linii. W moim przypadku, miałem stworzony zrzut z bazy A z
pg_dump -a -t table_name > dump.sql
i starał się przywrócić go do bazy B z
psql < dump.sql
(po aktualizacji odpowiedni env Vars, oczywiście)Co ja w końcu zorientowali się, że wysypisko, choć było
data-only
(The-a
opcja , aby struktura tabeli nie była jawnie częścią zrzutu), była specyficzna dla schematu. Oznaczało to, że bez ręcznej modyfikacji zrzutu nie mogłem użyć zrzutu wygenerowanego zschema1.table_name
do wypełnieniaschema2.table_name
. Ręczna modyfikacja zrzutu była łatwa, schemat jest określony w pierwszych 15 wierszach lub więcej.źródło
W większości przypadków rozwiązaniem jest zainstalowanie
postgres-contrib
pakietu.źródło
Używając PostgreSQL 10 na SUSE 12, rozwiązałem ten
invalid command \N
błąd, zwiększając miejsce na dysku. Brak miejsca na dysku był przyczyną błędu. Możesz stwierdzić, czy zabrakło miejsca na dysku, patrząc na system plików, do którego dane mają trafić wdf -h
wyniku. Jeśli system plików / montowanie jest w 100% wykorzystane, po zrobieniu czegoś takiegopsql -f db.out postgres
(zobacz https://www.postgresql.org/docs/current/static/app-pg-dumpall.html ) prawdopodobnie będziesz musiał zwiększyć dostępne miejsce na dysku .źródło
Miałem ten sam problem, utworzyłem nową bazę danych i rozpocząłem
invalid command \N
przywracanie z psql. Rozwiązałem to, ustawiając ten sam obszar tabel ze starą bazą danych.Na przykład stara kopia zapasowa bazy danych miała obszar tabel „pg_default”, zdefiniowałem ten sam obszar tabel w nowej bazie danych i powyższy błąd zniknął!
źródło
Podążałem za wszystkimi tymi przykładami i wszystkie zawiodły z błędem, o którym mówimy:
Skopiuj tabelę z jednej bazy danych do drugiej w Postgres
To, co zadziałało, to składnia z -C , patrz tutaj:
DROP SCHEMA public; ALTER SCHEMA originalDBSchema RENAME TO public;
źródło
Moje rozwiązanie było takie:
w ten sposób mogłem odczytać komunikat o błędzie
Mam nadzieję, że to komuś pomoże.
źródło