2013-07-19 7 views
1

Я хотел бы добавить файл в мою систему Postgresql (в частности RedShift). Я нашел аргумент для копии, которая позволяет импортировать gzip-файл. Но провайдер для данных, которые я пытаюсь включить в свою систему, производит только данные в .zip. Любые встроенные команды postgres для открытия .zip?Как импортировать файл ZIpped в таблицу Postgres

ответ

1

Вы можете просто сделать что-то вроде

unzip -c myfile.zip | gzip myfile.gz

достаточно легко автоматизировать, если у вас есть достаточное количество файлов.

+1

Файл не хранится локально, так и база данных не является локальным. –

+0

Уг. Хорошо, что делает его жестким, потому что я не думаю, что у Amzn есть какой-то вариант для этого. Можете ли вы получить доступ к exec psql на сервере, где файл хранится и подключается таким образом? В противном случае, возможно, придется отправить файл через сервер среднего человека, где вы можете. –

0

unzip -c /path/to/.zip | psql -U user

'пользователь' должен быть иметь супер права пользователя еще вы получите

ERROR: must be superuser to COPY to or from a file 

Чтобы узнать больше об этом см

https://www.postgresql.org/docs/8.0/static/backup.html

В основном эта команда используется в обработки большие базы данных

0

Это могут работать только при загрузке красного смещения от S3, но вы на самом деле можно просто включить «GZIP» флаг при копировании данных в красных смещениях таблиц, как описано here:

Это формат, который работает для me, если мой ведро s3 содержит gzipped .csv.

copy <table> from 's3://mybucket/<foldername> '<aws-auth-args>' delimiter ',' gzip; 
0

Изнутри Postgres:

COPY table_name FROM PROGRAM 'unzip -p input.csv.zip' DELIMITER ','; 

На странице человека для unzip -p:

-p  extract files to pipe (stdout). Nothing but the file data is sent to stdout, and the files are always extracted in binary 
     format, just as they are stored (no conversions). 
Смежные вопросы