Как разделить сжатый файл фиксированной длины с распаковкой
Я имею дело со сжатыми (gzip) плоскими файлами фиксированной длины, которые затем мне нужно превратить в плоские файлы с разделителями, чтобы я мог передать их в gpload. Мне сказали, что можно разграничить файл, не распаковывая его, и передать его напрямую в gpload, поскольку он может обрабатывать сжатые файлы.
Кто-нибудь знает способ разделить файл, пока он в формате.gz?
1 ответ
Невозможно разграничить сжатые gzip данные, не распаковывая их. Но вам не нужно ограничивать его, вы можете просто загрузить его как тип данных фиксированной ширины, он будет распакован на лету gpfdist. Обратитесь к главе "Импорт и экспорт данных фиксированной ширины" в руководстве администратора здесь: http://gpdb.docs.pivotal.io/4330/admin_guide/load.html
Вот пример:
[gpadmin@localhost ~]$ gunzip -c testfile.txt.gz
Bob Jones 27
Steve Balmer 50
[gpadmin@localhost ~]$ gpfdist -d ~ -p 8080 &
[1] 41525
Serving HTTP on port 8080, directory /home/gpadmin
[gpadmin@localhost ~]$ psql -c "
> CREATE READABLE EXTERNAL TABLE students (
> name varchar(20),
> surname varchar(30),
> age int)
> LOCATION ('gpfdist://127.0.0.1:8080/testfile.txt.gz')
> FORMAT 'CUSTOM' (formatter=fixedwidth_in,
> name='20', surname='30', age='4');
> "
CREATE EXTERNAL TABLE
[gpadmin@localhost ~]$ psql -c "select * from students;"
name | surname | age
-------+---------+-----
Bob | Jones | 27
Steve | Balmer | 50
(2 rows)