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

Импортиране на компресиран CSV файл в PostgreSQL

Има стар трик за използване на наименувана тръба (работи на Unix, не знам за Windows)

  • създайте наименувана тръба:mkfifo /tmp/omyfifo
  • запишете съдържанието на файла в него:zcat mycsv.csv.z > /tmp/omyfifo &
  • [от psql] copy mytable(col1,...) from '/tmp/omyfifo'
  • [когато приключи] :rm /tmp/omyfifo

zcat в backgound ще блокира, докато четецът (тук:COPY команда) ще започне да чете и ще завърши на EOF. (или ако четецът затвори тръбата)

Можете дори да стартирате няколко двойки pipes+zcat, които ще бъдат взети от множество COPY изрази във вашия sql скрипт.

Това ще работи от pgadmin, но fifo (+zcat процес) трябва да присъства на машината, където работи сървърът на СУБД.

BTW:подобен трик с помощта на netcat може да се използва за четене на файл от отдалечена машина (която, разбира се, трябва да запише файла в мрежовия сокет)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да защитите своята PostgreSQL база данни - 10 съвета

  2. PostgreSQL IN оператор с слаба производителност на подзаявката

  3. Неуспешно намиране на функцията за преобразуване от неизвестно в текст

  4. Таблица извадка и други методи за получаване на произволни кортежи

  5. SQLAlchemy - SQLite за тестване и Postgresql за разработка - Как да пренасям?