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

КОПИРАНЕ само на някои колони от въведен CSV?

Не знам откъде имаш този синтаксис, но COPY не приема списък с псевдоними на колони като този. Вижте помощта:

COPY table_name [ ( column_name [, ...] ) ]
    FROM { 'filename' | PROGRAM 'command' | STDIN }
    [ [ WITH ] ( option [, ...] ) ]

(AS не е една от изброените опции; за да видите пълния изход, изпълнете \d copy в psql или погледнете ръководството за copy команда онлайн).

Няма възможност за картографиране в COPY което ви позволява да четете само някои колони от входния CSV. Би било наистина полезно, но все още никой не е имал време/интерес/финансиране да го приложи. Това наистина е само една от многото задачи за преобразуване/филтриране на данни, които хората така или иначе искат.

PostgreSQL очаква списъка с колони, даден в COPY да бъде в същия ред, отляво надясно, като това, което е в CSV файла, и да има същия брой записи, тъй като CSV файлът има колони. Така че, ако напишете:

COPY con (date,kgs)

тогава PostgreSQL ще очаква въведен CSV с точно две колони . Ще използва първата CSV колона за "date" колона на таблицата и втората csv колона за "kgs" колона на таблицата. Няма значение какви са CSV заглавките, те се игнорират, ако посочите WITH (FORMAT CSV, HEADER ON) , или се третират като нормални редове с данни, ако не посочите HEADER .

PostgreSQL 9.4 добавя FROM PROGRAM за COPY , така че можете да изпълните команда на shell, за да прочетете файла и да го филтрирате. Прост скрипт на Python или Perl ще свърши работа.

Ако е малък файл, просто отворете копие в електронната таблица по ваш избор като csv файл, изтрийте нежеланите колони и го запазете, така че само date и kgs остават колони.

Алтернативно, COPY към междинна таблица, която има всички същите колони като CSV , след което направете INSERT INTO ... SELECT за да прехвърлите само желаните данни в истинската целева таблица.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres йерархичен (jsonb) CTE ненужно бавен

  2. Оптимизиране на GROUP BY + COUNT DISTINCT на невложена jsonb колона

  3. Прехвърляне на H2 данни към PostgreSQL

  4. Правилен генератор на идентификатори на Hibernate за колона postgres serial/bigserial?

  5. PostgreSQL psql команден ред показва колона bytea