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

Импортиране на PostgreSQL CSV от командния ред

Решението в приетия отговор ще работи само на сървъра и когато потребителят, изпълняващ заявката, ще има разрешения да прочете файла, както е обяснено в този SO отговор.

В противен случай по-гъвкав подход е да се замени COPY на SQL команда с psql "мета-команда" на "\copy който приема всички същите опции като "истинското" COPY, но се изпълнява вътре в клиента (без нужда от ; в края):

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv"

Според документи, \copy команда:

Извършва фронтенд (клиентско) копие. Това е операция, която изпълнява командата SQL COPY, но вместо сървърът да чете или записва посочения файл, psql чете или записва файла и маршрутизира данните между сървъра и локалната файлова система. Това означава, че достъпността и привилегиите на файлове са тези на локалния потребител, а не на сървъра, и не се изискват привилегии на суперпотребител на SQL.

Освен това, ако the_file.csv съдържа заглавката в първия ред, може да бъде разпозната чрез добавяне на header в края на горната команда:

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv header"


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BeanCreationException:Грешка при създаването на bean с име 'flywayInitializer'

  2. Промяна на порт на сървър на postgres контейнери в Docker Compose

  3. Предаване на множество стойности в един параметър

  4. Pgbackrest Възстановяване и възстановяване на Delta

  5. Прозоречна функция на Postgres и групиране по изключение