2016-12-31 35 views
0

我在GPDB中有一個非常大的數據集,從中我需要提取接近350萬條記錄。我用這個平面文件,然後用於加載到不同的表。我使用Talend,並使用tgreenpluminput組件進行select * from table,並將其提供給tfileoutputdelimited。然而,由於文件的體積非常大,我在Talend服務器上執行它時耗盡內存。使用talend執行while循環與GPDB

我缺少超級用戶的權限,無法執行\ copy將其輸出到csv文件。我覺得像是做某事,或者有更多有限數量的行的tloop可能適合我。但我的表沒有任何row_id或uid來區分行。

請幫我建議如何解決這個問題。欣賞任何想法。謝謝!

+0

GPDB具有「可寫外部表」來導出表數據[link](http://gpdb.docs.pivotal.io/43110/ref_guide/sql_commands/CREATE_EXTERNAL_TABLE.html)。這樣gpdb段將並行導出數據(更多段,更多工作者導出數據)。 目前尚不清楚您要載入數據的位置(gpdb?或hdfs?)。 \不建議複製,因爲所有數據都將通過主服務器。 –

+0

我想加載使用gpload組件。但有沒有辦法循環有限的行,並將輸出聚合到一個csv然後用於gpload? – wizengeeky

回答

1

如果你的要求是數據裝載到一個表不同的表,那麼你並不需要去load into file然後from file to table

有一個名爲tGreenplumRow的組件,允許您在其中編寫直接的sql查詢(DDL和DML查詢)。

下面是一個樣本作業,

enter image description here

如果您發現有three insert statements此組件中。它將逐個執行,以分號分隔。