Flink源码解析系列--JdbcDialect接口

本文的Flink源码版本为: 1.15-SNAPSHOT,读者可自行从Github clone.

虽然不同的关系型数据库均遵循一定的统一标准,但各自的Driver实现,增删改查的SQL语法等可能略有不同。就跟中国话也有各地区的方言一样,数据库也有属于自己的"方言",即JdbcDialect。

JdbcDialect

在Flink中,JdbcDialect被定义为1个接口。

public interface JdbcDialect extends Serializable {

    // 方言名称
    String dialectName();

	// 获取数据类型转换器,用于将JDBC对象转化为Flink的内部对象
    JdbcRowConverter getRowConverter(RowType rowType);
	
	// 返回数据库的limit语句
    String getLimitClause(long limit);
	
	// 校验行数据类型
    void validate(RowType rowType) throws ValidationException;

    // 返回默认的驱动名称
    default Optional<String> defaultDriverName() {
        return Optional.empty();
    }

    // 返回分隔符
    String quoteIdentifier(String identifier);

    // 返回Upsert SQL,实现幂等插入
    Optional<String> getUpsertStatement(
            String tableName, String[] fieldNames, String[] uniqueKeyFields);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值