2017-07-10 50 views
0

我連接到使用的BigQuery辛巴的ODBC驅動程序和我得到這個錯誤使用StandardSQL:通過ODBC

SQLState: HY000, Native Error: 100 
Message: [Simba][BigQuery] (100) Error interacting with REST API: 2.1192 - 2.1215: Unrecognized function regexp_contains 

我懷疑這是因爲大量查詢不知道我試圖說服StandardSQL而比LegacySQL。我如何通過ODBC使用StandardSQL?

回答

0

您可以在ODBC管理頁面的ODBC驅動程序高級選項中配置「語言方言」並將其設置爲「標準SQL」。如果您通過INI文件配置驅動程序,請將SQLDialect設置爲1

使用StandardSQL的另一種方法是用#standardSQL作爲查詢的前綴。例如:

#standardSQL 
SELECT 
    weight_pounds, state, year, gestation_weeks 
FROM 
    `bigquery-public-data.samples.natality` 
ORDER BY weight_pounds DESC 
LIMIT 10; 

(從文檔上enabling standard SQL

+0

您好,Tim,感謝您的幫助。我嘗試在我的'odbcinst.ini'文件中將SQLDialect設置爲1,但無濟於事。 'REGEX_CONTAINS'仍然失敗,而'REGEX_MATCH'工作,這表明傳統的SQL仍在使用。我正在使用從[Google的網站](https://cloud.google.com/bigquery/partners/simba-drivers/)下載的ODBC驅動程序。也許這是一個不支持這個設置的舊版本? – Chosia

+0

[Simba文檔](http://www.simba.com/products/BigQuery/doc/ODBC_InstallGuide/mac/content/odbc/bq/options/ui/sqldialect.htm)確實提到了此設置,但它也表示1是默認的,這顯然不是我的情況,所以有些東西在這裏。 – Chosia

+0

至於使用'#standardSQL'查詢前綴,我使用生成的SQL進行測試並不容易。我可以重寫代碼,但是,我對[BigQuery ODBC驅動程序頁面](https://cloud.google.com/bigquery/partners/simba-drivers/)上的常見問題感到有些沮喪,它聲明查詢前綴不受ODBC驅動程序支持... – Chosia

0

我現在計算出來。這對我的工作有兩個選項:

  1. odbc.ini文件
  2. 添加SQLDialect=1連接字符串添加SQLDialect=1數據源配置。這並沒有工作

選項分別爲:

  1. odbcinst.ini文件添加SQLDialect=1到驅動程序配置。
  2. #standardsql