sql >> Databáze >  >> RDS >> PostgreSQL

Jak ignorovat chyby pomocí psql \copy meta-command

Chyby nemůžete přeskočit, aniž byste přeskočili celý příkaz až po Postgres 14 včetně. V současnosti neexistuje žádné sofistikovanější řešení chyb.

\copy je jen obal kolem SQL COPY že výsledky kanálů přes psql. Manuál pro COPY :

COPY zastaví operaci při první chybě. To by nemělo vést k problémům v případě COPY TO , ale cílová tabulka již obdržela dřívější řádky v COPY FROM . Tyto řádky nebudou viditelné ani přístupné, ale stále zabírají místo na disku. To by mohlo představovat značné množství plýtvaného místa na disku, pokud by k selhání došlo i během rozsáhlé operace kopírování. Možná budete chtít vyvolat VACUUM obnovit ztracený prostor.

Odvážný důraz můj. A:

COPY FROM vyvolá chybu, pokud kterýkoli řádek vstupního souboru obsahuje více nebo méně sloupců, než se očekává.

COPY je extrémně rychlý způsob importu/exportu dat. Důmyslné kontroly a zpracování chyb by jej zpomalily.

Došlo k pokusu přidat protokolování chyb do COPY v Postgres 9.0, ale nikdy nebyl potvrzen.

Řešení

Opravte místo toho svůj vstupní soubor.

Pokud máte ve vstupním souboru jeden nebo více dalších sloupců a soubor je jinak konzistentní , můžete do tabulky isa přidat fiktivní sloupce a poté je vypusťte. Nebo (čistič s produkčními tabulkami) importujte do dočasné pracovní tabulky a INSERT vybrané sloupce (nebo výrazy) do cílové tabulky isa odtud.

Související odpovědi s podrobnými pokyny:

  • Jak aktualizovat vybrané řádky hodnotami ze souboru CSV v Postgresu?
  • Příkaz COPY:zkopírujte pouze určité sloupce z csv


  1. Vraťte základní datový typ z hodnoty varianty SQL na serveru SQL

  2. Jak UUID_SHORT() funguje v MariaDB

  3. Jak nainstalovat Cassandra v3 na CentOS 6

  4. Php volající skript zálohování databáze sqlserver, záložní soubor vytvořen a poté odstraněn