Flink CDC中JdbcSink.sink中的sql 语句中的表 可以做为参数传入吗,我现在只想到是 写数据库函数实现?
是的,你可以在Flink CDC中的JdbcSink.sink方法中将SQL语句中的表名作为参数传入。你可以使用Java的字符串格式化功能来实现这个需求。
以下是一个示例:
String sql = "INSERT INTO %s SELECT * FROM source_table";
String tableName = "target_table";
String formattedSql = String.format(sql, tableName);
JdbcSink<Row> jdbcSink = JdbcSink.sink(formattedSql, (ps, row) -> {
ps.setInt(1, row.getInteger(0));
ps.setString(2, row.getString(1));
// ... set other fields
}, env.getConfig().getGlobalJobParameters());
在这个示例中,我们首先定义了一个包含占位符的SQL语句,然后使用String.format
方法将表名替换为实际的表名。最后,我们将格式化后的SQL语句传递给JdbcSink.sink
方法。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。