2016-12-31 7 views
0

У меня очень большой набор данных в GPDB, из которого мне нужно извлечь около 3,5 миллионов записей. Я использую это для файла flatfile, который затем используется для загрузки в разные таблицы. Я использую Talend и делаю select * из таблицы, используя компонент tgreenpluminput, и передаю его в tfileoutputdelimited. Однако из-за очень большого объема файла у меня заканчивается память при выполнении его на сервере Talend.Сделайте цикл while с GPDB, используя talend

Мне не хватает разрешений суперпользователя и не удается выполнить \ copy для вывода его в файл csv. Я думаю, что что-то вроде того, что нужно делать, или трюк с более ограниченным количеством строк, может работать для меня. Но моя таблица не имеет каких-либо row_id или uid, чтобы отличать строки.

Пожалуйста, помогите мне с предложениями, как решить эту проблему. Цените любые идеи. Благодаря!

+0

GPDB имеет «записываемую внешнюю таблицу» для экспорта данных таблицы [link] (http://gpdb.docs.pivotal.io/43110/ref_guide/sql_commands/CREATE_EXTERNAL_TABLE.html). Таким образом, сегменты gpdb будут экспортировать данные параллельно (больше сегментов, больше рабочих для экспорта данных). Непонятно, где вы хотите загрузить данные (gpdb? Или hdfs?). \ copy не рекомендуется, так как все данные будут проходить через главный сервер. –

+0

Я хочу загрузить с помощью компонента gpload. Но есть ли способ ограничить ограниченные строки и объединить вывод в csv, который затем будет использоваться для gpload? – wizengeeky

ответ

1

Если ваше требование к загрузки данных в разные таблицы из одной таблицы, то вам не нужно идти на load into file, а затем from file to table.

Существует компонент с именем tGreenplumRow, который позволяет вам писать прямые sql-запросы (DDL и DML-запросы).

Ниже работа образец,

enter image description here

Если вы заметили, есть three insert statements внутри этого компонента. Он будет выполняться один за другим, разделенным точкой с запятой.