Looker含美元符号临时表,第三方SQL客户端查询失败求助
解决Looker临时表在第三方SQL客户端查询失败的问题
嘿,这个问题我之前帮不少人解决过——核心原因是你的第三方SQL客户端把表名里的美元符号$误当成了参数占位符(比如PostgreSQL这类数据库里,$1、$2是预编译语句的参数标记),所以才会报参数数量不匹配的错误。
下面给你几个靠谱的解决办法:
方法一:用双引号包裹带特殊字符的表名
大多数支持ANSI SQL的数据库(比如PostgreSQL、BigQuery、Snowflake等)都允许用双引号来包含带特殊字符的标识符。把你的查询改成这样:SELECT * FROM looker_scratch."LR$5UA5D3XQDBPAYU0Q9FLFE_test";双引号会明确告诉客户端这是一个完整的表名,不会把里面的
$解析成参数标记。方法二:调整SQL客户端的参数解析设置
很多第三方客户端(比如DBeaver、DataGrip、Navicat)都有控制参数占位符识别的选项。你可以在客户端的设置里找找类似“参数占位符”“预编译语句解析”的选项,把默认的$作为参数标记的功能关掉,这样它就会把表名里的$当成普通字符处理了。补充说明
Looker自带的SQL Runner之所以能正常查询,是因为它内部已经对这类特殊表名做了自动转义处理,不用你手动操作——但第三方客户端没有这个适配,所以需要我们自己处理特殊字符的识别问题。
内容的提问来源于stack exchange,提问作者LittleBobbyTables
相关产品推荐
相关产品推荐

