Google bigquery 通过ODBC使用标准SQL

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

我正在使用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。如何通过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配置选项。您能否就此联系支持人员?您的安装似乎有些意外。