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 :
COPYzastaví 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 vCOPY 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 vyvolatVACUUMobnovit ztracený prostor.
Odvážný důraz můj. A:
COPY FROMvyvolá 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