Nie można pominąć błędów bez pominięcia całego polecenia aż do Postgres 14. włącznie. Obecnie nie ma bardziej zaawansowanej obsługi błędów.
\copy jest tylko opakowaniem wokół SQL COPY że kanały wyniki przez psql. Podręcznik dla COPY :
COPY zatrzymuje działanie przy pierwszym błędzie. Nie powinno to prowadzić do problemów w przypadku COPY TO , ale docelowa tabela już otrzymała wcześniejsze wiersze w COPY FROM . Te wiersze nie będą widoczne ani dostępne, ale nadal zajmują miejsce na dysku. Może to oznaczać znaczną ilość zmarnowanego miejsca na dysku, jeśli awaria przeszła na dużą operację kopiowania. Możesz chcieć wywołać VACUUM by odzyskać zmarnowaną przestrzeń.
Moje odważne podkreślenie. Oraz:
COPY FROM zgłosi błąd, jeśli jakakolwiek linia pliku wejściowego zawiera więcej lub mniej kolumn niż oczekiwano.
COPY to niezwykle szybki sposób na import/eksport danych. Skomplikowane kontrole i obsługa błędów spowolniłyby ten proces.
Próbowano dodać logowanie błędów do COPY w Postgres 9.0, ale nigdy nie został popełniony.
Rozwiązanie
Zamiast tego napraw plik wejściowy.
Jeśli masz co najmniej jedną dodatkową kolumnę w pliku wejściowym, a plik jest w przeciwnym razie spójny , możesz dodać fikcyjne kolumny do swojej tabeli isa i upuść je później. Lub (czystsze z tabelami produkcyjnymi) zaimportuj do tymczasowej tabeli pomostowej i INSERT wybrane kolumny (lub wyrażenia) do tabeli docelowej isa stamtąd.
Powiązane odpowiedzi ze szczegółowymi instrukcjami:
- Jak zaktualizować wybrane wiersze wartościami z pliku CSV w Postgresie?
- Kopiuj polecenie:skopiuj tylko określone kolumny z csv