catalog如何配置转义字符是否当为普通字符串呢

Viewed 16

我在使用clickhouse catalog的时候发现一个问题。比如我的clickhouse中某个字段存储了 "kk\\ss"数据。然后创建clickhouse的catalog,比如 ck_cl 然后我执行如下查询

select col1 from ck_cl.db.tableA;

然后,在doris中输出的是"kk\ss"。我知道是因为它给转义了。既没有把反斜杠当做一个字符来处理。我在我的sql_mode中设置了如下:

SET global sql_mode = CONCAT(@@global.sql_mode, ',NO_BACKSLASH_ESCAPES');

既使用NO_BACKSLASH_ESCAPES模式。然后我发现其实并没有什么改变。所以我想问下,这个应该怎么做呢?

1 Answers

已经明确了。我使用seatunnel组件去读取clickhouse数据。由于seatunnel使用的也是clickhouse-jdbc这库。发现其实clickhouse官网的jdbc就是会去做转义。而且jdbc的参数中没有禁用转义的参数。有如下方法可以禁用:

setEscapeProcessing(boolean enable)

但是在doris中,没有办法在创建catalog的方式指定。

定位的方法:

  1. 尝试使用seatunnel(依赖clickhouse-jdbc)去消费这个数据。输出数据A
  2. 使用clickhouse数据导出工具,输出数据B
    结论:使用导出工具没有转义,而clickhouse-jdbc确实有做转义
    然后去deepwiki查询相关源代码,是否有相关参数可以控制转义。结果是没有。