PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak ignorować błędy za pomocą psql \copy meta-command

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połącz się z bazą danych PostgreSQL w kontenerze Docker

  2. Błąd PostgreSQL:Relacja już istnieje

  3. Jak wyświetlić kod CREATE VIEW dla widoku w PostgreSQL?

  4. Kolumna dynamiczna w postgresie instrukcji SELECT

  5. Jak interpretować wartość txid_current() PosgreSQL?