如果您還有興趣,我已經在Windows上使用Go和Oracle幾個月了。到目前爲止,我最喜歡的車手是go-oci8。它比goracle快得多,似乎更加活躍。
我們的一些應用程序需要部署在我們無法訪問的計算機上。這兩種本地SQL驅動程序都可以在不需要任何外部配置的情況下與應用程序一起編譯,因此這是一個巨大的優勢計算機仍然需要安裝Oracle客戶端,但這是唯一的外部依賴。
我不會說go-oci8的產品已經準備好了,但是當你知道它的侷限性時它已經足夠穩定了。一個例子是,當它在多個goroutine上同時運行時會發生混亂,所以如果你需要這個,你可能需要使用互斥鎖。
我已經基本遵循本教程安裝它:https://gist.github.com/mnadel/8678269
最棘手的部分是創造oci8.pc corretly。我的是:
prefix=/devel/target/1.0
exec_prefix=${prefix}
libdir=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
includedir=C:/oracle/instantclient_12_1_64/sdk/include
oralib=C:/oracle/instantclient_12_1_64/sdk/lib/msvc
orainclude=C:/oracle/instantclient_12_1_64/sdk/include
gcclib=c:/MinGW_64/mingw64/lib
gccinclude=c:/MinGW_64/mingw64/lib
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Version: 12.1
Description: oci8 library
Libs: -L${oralib} -L${gcclib} -loci
Libs.private:
Cflags: -I${orainclude} -I${gccinclude}
有些事情可能是reduntant,我可能會嘗試改善它在一臺乾淨的機器上。
需要記住的一件重要事情是,您應該對Go和Oracle客戶端使用相同的體系結構。所以如果你想使用64位版本的Go,你還需要64位版本的Oracle。我有兩個32位和64位版本,而64位是我的默認值,當我需要構建32位版本時,我使用bat文件來更改必要的路徑和環境變量。
可能值得投入一些時間來使其工作,您可能會獲得比使用ODBC更好的性能。我一直在使用它有點高的數據量(查詢獲取500萬行以上),它工作得很好。
我決定使用ODBC來代替。我在這裏試過這個適配器,到目前爲止它工作的很完美。鏈接:https://github.com/weigj/go-odbc – himekami