我只是想学习Apache Beam,并从oracle数据库返回数据。我已经设法建立基本连接并返回一些数据,但是我需要在运行sql查询以返回我的数据之前调用存储的proc(存储的proc设置了查询上下文,以将返回的数据限制为特定的分区)
我尝试添加第二个.withQuery语句,但这不起作用。该代码不会返回错误,但是会返回所有分区中的数据
Pipeline p = Pipeline.create(options);
PCollection<List<String>> rows p.apply(JdbcIO.<List<Strng>>read()
.withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create(
"oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@server")
.withUsername("uname")
.withPassword("pword")
)
.withQuery("call procname(partitionid)")
.withQuery("Select * from table")
.withCoder(ListCoder.of(StringUtf8Coder.of()))
.withRowMapper(new JdbcIO.RowMapper<List<String>>(){
public List<String> mapRow(ResultSet resultSet) throws Exception {
List<String> addRow = new ArrayList<String>();
for(int i=1; i<= resultSet.getMetaData().getColumnCount();i++)
{
addRow.add(i-1, String.valueOf(resultSet.getObject(i)));
}
return addRow;
}
}