PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да игнорирате грешки с метакомандата psql \copy

Не можете да пропуснете грешките, без да пропуснете цялата команда до и включително Postgres 14. Понастоящем няма по-сложна обработка на грешки.

\copy е просто обвивка около SQL COPY който канализира резултатите чрез psql. Ръководството за COPY :

COPY спира работата при първа грешка. Това не трябва да води до проблеми в случай на COPY TO , но целевата таблица вече ще е получила по-ранни редове в COPY FROM . Тези редове няма да бъдат видими или достъпни, но все пак заемат дисково пространство. Това може да доведе до значително количество загубено дисково пространство, ако неуспехът се е случил при голяма операция за копиране. Може да искате да извикате VACUUM за да възстановите пропиляното пространство.

Удебелен акцент мой. И:

COPY FROM ще изведе грешка, ако някой ред от входния файл съдържа повече или по-малко колони от очакваното.

COPY е изключително бърз начин за импортиране/експортиране на данни. Сложните проверки и обработката на грешки биха го забавили.

Имаше опит за добавяне на регистриране на грешки към COPY в Postgres 9.0, но никога не е бил ангажиран.

Решение

Вместо това поправете своя входен файл.

Ако имате една или повече допълнителни колони във вашия входен файл и файлът е по друг начин последователен , можете да добавите фиктивни колони към вашата таблица isa и ги пуснете след това. Или (инструмент за почистване с производствени таблици) импортирайте във временна стадия и INSERT избрани колони (или изрази) към вашата целева таблица isa от там.

Свързани отговори с подробни инструкции:

  • Как да актуализирам избрани редове със стойности от CSV файл в Postgres?
  • Команда COPY:копирайте само определени колони от 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. Използване на JSONB в PostgreSQL:Как ефективно да съхранявате и индексирате JSON данни в PostgreSQL

  2. Как да наблюдавате PostgreSQL, работещ вътре в Docker контейнер:Част втора

  3. PostgreSQL - извличане на реда, който има максимална стойност за колона

  4. Намерете стойности, които не съдържат числа в PostgreSQL

  5. Писане на файл с помощта на множество нишки