我对Groovy不太熟悉,但我需要从一个大表中获取一个子集(大约5000行)并将其插入到另一个已存在的表中。应删除第二个内容,并且在进程结束时应仅包含表1中的数据子集。这些表位于AS-400数据库中。我不确定这是否会产生影响。在此先感谢您的帮助。
以下是我到目前为止,但它可能甚至没有接近正确。它要求目标和源列,正在使用的数据库的connectionId以及定义的集合表是什么表。
<?xml version="1.0" encoding="UTF-8"?>
<custom-script-transformer name="Subset Data Load" table="false">
<description>Refresh target table columns with source table columns</description>
<category>SWBC</category>
<fieldvar name="Target_Column">
<description>Column to be updated</description>
</fieldvar>
<fieldvar name="Source_Column">
<description>source column</description>
</fieldvar>
<paramvar name="dsConnId" dataType="string">
<description>Defined set connection id</description>
<default-value>default</default-value>
</paramvar>
<paramvar name="dsTable" dataType="string">
<description>Defined set table</description>
</paramvar>
<script>
import groovy.sql.Sql;
if ( dsConnId == 'default' ) {
sql = new Sql(datasource);
} else {
sql = new Sql(connectionProviderFactory.newConnectionProvider(dsConnId).getDataSource());
}
q = sql.getDataSource().getConnection().getMetaData().getIdentifierQuoteString();
def rows = sql.rows("select #Source_Column from #dsTable")
assert rows.size() == 5000
#Target_Column = #Source_Column;
sql.close();
</script>
</custom-script-transformer>