Как экспортировать данные из таблицы в формате CSV из базы данных Greenplum в корзину AWS s3 - PullRequest
0 голосов
/ 30 августа 2018

У меня есть данные в таблице

select * from my_table

Содержит 10k наблюдения. Как экспортировать данные из таблицы в формате CSV в s3 корзину. (Я не хочу экспортировать данные на мой локальный компьютер и затем нажать s3).

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Пожалуйста, пожалуйста, ПРЕКРАТИТЕ пометить ваши вопросы как PostgreSQL, так и Greenplum. Ответ на ваш вопрос очень отличается, если вы используете Greenplum против PostgreSQL. Я не могу подчеркнуть это достаточно.

Если вы используете Greenplum, вам следует использовать протокол S3 во внешних таблицах для чтения и записи данных в S3.

Итак, ваш стол:

select * from my_table;

А ваш внешний стол:

CREATE EXTERNAL TABLE ext_my_table (LIKE my_table) 
LOCATION ('s3://s3_endpoint/bucket_name')
FORMAT 'TEXT' (DELIMITER '|' NULL AS '' ESCAPE AS E'\\');

А потом записываете в ваше ведро s3:

INSERT INTO ext_my_table SELECT * FROM my_table;

Вам потребуется выполнить некоторую настройку в кластере Greenplum, чтобы у вас также был файл конфигурации s3. Это также относится к каждому сегменту каталога.

gpseg_data_dir/gpseg-prefixN/s3/s3.conf

Пример содержимого файла:

[default]
secret = "secret"
accessid = "user access id"
threadnum = 3
chunksize = 67108864

Более подробную информацию о S3 можно найти здесь: http://gpdb.docs.pivotal.io/5100/admin_guide/external/g-s3-protocol.html#amazon-emr__s3_config_file

0 голосов
/ 30 августа 2018

Я предлагаю сначала загрузить данные в ваш главный узел с помощью WINSCP или Передача файлов. Затем переместите этот файл из вашего главного узла в хранилище S3.

Поскольку перемещение данных с главного узла в хранилище S3 использует пропускную способность Amazon, и она будет намного быстрее, чем пропускная способность нашего локального соединения, используемая для передачи файла с локального компьютера на S3.

...