Google bigquery 通过ODBC使用标准SQL
我正在使用Simba的ODBC驱动程序连接到BigQuery,出现以下错误:Google bigquery 通过ODBC使用标准SQL,google-bigquery,Google Bigquery,我正在使用Simba的ODBC驱动程序连接到BigQuery,出现以下错误: SQLState: HY000, Native Error: 100 Message: [Simba][BigQuery] (100) Error interacting with REST API: 2.1192 - 2.1215: Unrecognized function regexp_contains 我怀疑这是因为BigQuery不知道我想说的是StandardSQL而不是LegacySQL。如何通过ODB
SQLState: HY000, Native Error: 100
Message: [Simba][BigQuery] (100) Error interacting with REST API: 2.1192 - 2.1215: Unrecognized function regexp_contains
我怀疑这是因为BigQuery不知道我想说的是StandardSQL而不是LegacySQL。如何通过ODBC使用标准SQL?您可以在ODBC管理页面的ODBC驱动程序高级选项中配置“语言方言”,并将其设置为“标准SQL”。如果您是通过INI文件配置驱动程序,请将sqldialent
设置为1
使用StandardSQL的另一种方法是在查询前加上#StandardSQL
。例如:
#standardSQL
SELECT
weight_pounds, state, year, gestation_weeks
FROM
`bigquery-public-data.samples.natality`
ORDER BY weight_pounds DESC
LIMIT 10;
(从文档开始)我现在明白了。对我有效的两个选项是:
odbc.ini
文件中的数据源配置添加sqldialent=1
sqldialent=1
添加到连接字符串sqldialent=1
添加到odbcinst.ini
文件中的驱动程序配置中#standardsql
嗨,蒂姆,谢谢你的帮助。我尝试在我的
odbcinst.ini
文件中将SQLDialogue设置为1,但没有效果REGEX\u CONTAINS
仍然失败,而REGEX\u MATCH
工作,这表明仍在使用遗留SQL。我正在使用从[谷歌网站]()下载的ODBC驱动程序。也许它是一个不支持此设置的旧版本?确实提到了此设置,但它也说1是默认值,这显然不是我的情况,所以这里有点不对劲。至于使用#standardSQL
查询前缀,因为我使用的是生成的SQL,所以测试起来不太容易。我可以重写代码,但是,上的FAQ指出ODBC驱动程序不支持查询前缀,这让我有点气馁……我实际上尝试在查询前加上“#standardsql”。但是,这会导致以下错误:(20)查询执行失败:查询文本指定使用\u legacy\u sql:false,而API选项指定:true
。因此,唯一的选择是正确使用ODBC配置选项。您能否就此联系支持人员?您的安装似乎有些意外。