Closed liyubin117 closed 2 years ago
@itinycheng 麻烦看一下,是不是因为ck本身不支持不带日期的时间呢
@itinycheng 麻烦看一下,是不是因为ck本身不支持不带日期的时间呢
确实如你所说,DateTime只支持带日期的时间,社区文档:https://clickhouse.com/docs/en/sql-reference/data-types/datetime/ ;
报错过程:Clickhouse jdbc接收Flink中Time字段并将其转换成了 hh:mm:ss,这个格式不被ClickHouse Server端接受;
看ClickHouse Types好像没有支持 不带日期的Time,可以将Time转成Long类型保存,绕过这个问题;
@liyubin117 关于兼容Flink Time问题有什么好建议不?我想修复这个问题;
当前可选方案两个:
1970-01-01
,将Time转成1970-01-01 hh:mm:ss
然后写Clickhouse的DateTime字段;@itinycheng 第一种方案在flink内部加个日期转换成clickhouse可以接收的形式,对用户来说不需要修改表结构,还能直接使用clickhouse自带的时间相关的udf,使用起来更友好些,但缺点就是数据含义发生了变化,容易产生歧义。如果用户觉得不影响的话,还是第一种比较好
@itinycheng 第一种方案在flink内部加个日期转换成clickhouse可以接收的形式,对用户来说不需要修改表结构,还能直接使用clickhouse自带的时间相关的udf,使用起来更友好些,但缺点就是数据含义发生了变化,容易产生歧义。如果用户觉得不影响的话,还是第一种比较好
好的,谢谢建议,我周末想想看,修复这个问题;
@liyubin117
Bug已修复,添加了1970-01-02前缀,参考了ClickHouse的 toTime 函数的输出 : https://github.com/itinycheng/flink-connector-clickhouse/commit/d33ff40b0d17f8859f23900f15f5045e6e2e6368
@itinycheng excellent!
报错如下: Column 0, name: id, type: Int32, parsed text: "-816858032" Column 1, name: name, type: String, parsed text: "9fb989b731b7d0f32d66dee746308ee77eb311db99a220adc78817b43e23c36ae32975e02834ec1f54308fd10d7f60f8c2fb" Column 2, name: t, type: DateTime, parsed text: "17"ERROR: DateTime must be in YYYY-MM-DD hh:mm:ss or NNNNNNNNNN (unix timestamp, exactly 10 digits) format. Code: 41, e.displayText() = DB::ParsingException: Cannot parse datetime