Flinksql 读写pgsql

一. 代码

 StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, EnvironmentSettings.inStreamingMode());

        AbstractJdbcCatalog catalog = JdbcCatalogUtils.createCatalog(
                "myPgsql",
                "staging",
                "username",
                "password",
                "jdbc:postgresql://xxx:port"
        );

        tableEnv.registerCatalog("myPgsql", catalog);
        tableEnv.useCatalog("myPgsql");
        tableEnv.useDatabase("staging");
        boolean staging = catalog.tableExists(new ObjectPath("staging", "medical.hospital_department"));
        System.out.println(staging);
        System.out.println(Arrays.toString(tableEnv.listCatalogs()));
        System.out.println(Arrays.toString(tableEnv.listDatabases()));
        //System.out.println(Arrays.toString(tableEnv.listTables()));
        tableEnv.executeSql("select id,name from `medical.hospital_department`").print();

//sql api
tableEnv.executeSql(
                "CREATE TABLE hospital_position (\n" +
                        "  id string,\n" +
                        "  department_id string,\n" +
                        "  waypoint_id STRING,\n" +
                        "  zone_id STRING,\n" +
                        "  PRIMARY KEY (id) NOT ENFORCED\n" +
                        ") WITH (\n" +
                        "   'connector' = 'jdbc',\n" +
                        "   'url' = 'jdbc:postgresql://xxxxx:port/数据库',\n" +
                        "   'username' = 'xx', " +
                        "   'password' = 'xxxx', " +
                        "   'table-name' = 'schema名.表名'\n" +
                        ")"
        );

2 踩坑

如果pgsql使用了schema,name此时表名需要``转义,否则会报找不到medical object

//     `medical.hospital_department`  一定要转义
        tableEnv.executeSql("select id,name from `medical.hospital_department`").print();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值