2023-11-15

DuckDB and ODBC

 DuckDB 是一套 in-process SQL OLAP database management system,所以是使用 DuckDB 在單機分析數據,也可以內嵌到應用程式。

因為有提供 ODBC interface,所以我使用 TDBC-ODBC 測試一下是否可以連線。

下載後解開壓縮檔,將二個檔案放在某個目錄(我是放在家目錄下的 Programs)。

首先在 Linux 執行需要有安裝 unixODBC。雖然 DuckDB 有提供 unixodbc_setup.sh 可以建立設定檔,不過需要python 以及相關的函式庫有安裝,所以我在執行時發生錯誤。不過只是要建立 ODBC 設定,DuckDB 在文件上也有提供相關的內容,所以自行在家目錄下建立以下二個檔案即可。

.odbc.ini

[DuckDB]
Driver = DuckDB Driver
Database=:memory:

.odbcinst.ini

[ODBC]
Trace = yes
TraceFile = /tmp/odbctrace

[DuckDB Driver]
Driver = /home/danilo/Programs/libduckdb_odbc.so

接下來就寫一個簡單的 script 測試。

package require tdbc::odbc

set connStr "DSN=DuckDB;"
if {[catch {tdbc::odbc::connection create db $connStr}]} {
   puts "Connection failed."
   exit
}

set statement [db prepare {SELECT VERSION() as version}]

puts "DuckDB version:"
$statement foreach row {
    puts [dict get $row version]
}

$statement close
db close

如果有印出 DuckDB 的版本,就表示可以透過 ODBC 來使用 DuckDB 了。

沒有留言: