2014-03-06 51 views
8

我收集有兩種方法可連接到Oracle數據庫中去(在Windows上):如何連接到Oracle中去

  1. github.com/tgulacsi/goracle
  2. github.com/mattn/ go-oci8

但是對於我這個級別的人(開源+ golang的初學者)來說,這兩個方法/驅動程序非常棘手。

這也是一個負擔,必須通過所有的部署,在不同的機器上開發等(也假設它會工作)。

有沒有更好的方法來連接到Oracle數據庫在golang或者如果沒有人可以向我解釋在高層次視圖或任何視圖,這將使這更容易?

指針將非常讚賞。

TQ。

+0

我決定使用ODBC來代替。我在這裏試過這個適配器,到目前爲止它工作的很完美。鏈接:https://github.com/weigj/go-odbc – himekami

回答

6

如果您還有興趣,我已經在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萬行以上),它工作得很好。

+0

謝謝你的幫助。過去幾個月我已經暫停了工作。找到了一名.NET程序員的工作。 – himekami

+0

你能提供一個示例代碼嗎?很抱歉,我對Go完全陌生,無法在其他地方找到它。 –