现在,我正在从文件中读取行,并使用以下代码保存在数据库中:
String strQuery = "INSERT INTO public.alarm (id, name, marks) VALUES (?, ?, ?)";
JDBCOutputFormat jdbcOutput = JDBCOutputFormat.buildJDBCOutputFormat()
.setDrivername("org.postgresql.Driver")
.setDBUrl("jdbc:postgresql://localhost:5432/postgres?user=michel&password=polnareff")
.setQuery(strQuery)
.setSqlTypes(new int[] { Types.INTEGER, Types.VARCHAR, Types.INTEGER}) //set the types
.finish();
DataStream<Row> rows = FilterStream
.map((tuple)-> {
Row row = new Row(3);
row.setField(0, tuple.f0);
row.setField(1, tuple.f1);
row.setField(2, tuple.f2);
return row;
});
rows.writeUsingOutputFormat(jdbcOutput);
env.execute();
}
}
上面的方法工作正常,它从文件中逐行选择一行并将其保存在数据库中。
例如:
如果文件包含:
1, mark, 20
然后数据库条目将如下所示:
id name marks
------------------
1 mark 20
现在需求是每一行,我必须创建2个不同的行,它应该如下所示:
例如:
如果文件包含:
1, mark, 20
然后数据库条目应如下所示:
id name marks
------------------
1 mark-1 20
1 mark-2 20
现在我应该返回List而不是row,并且数据流变量应该看起来像DataStream<List<Row>> rows
。
要实现此目的,我应该在JDBCOutputFormat变量中进行哪些更改?