2016-12-31 37 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此组件中。它将逐个执行,以分号分隔。