簡體   English   中英

如何在 Go 中連接到 Oracle

[英]How to connect to Oracle in go

我認為有兩種方法可以在 Go 中(在 Windows 上)連接到 Oracle DB:

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

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

在不同的機器上進行部署、開發等也是一種負擔(還假設它會工作)。

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

指針將不勝感激。

質量。

如果您仍然感興趣,我已經在 Windows 上使用 Go 和 Oracle 幾個月了。 到目前為止,我最喜歡的驅動程序是 go-oci8。 它比 goracle 快得多,而且似乎更活躍。

我們的一些應用程序需要部署在我們無權訪問的計算機上。 兩個本機 SQL 驅動程序都與應用程序一起編譯,無需任何外部配置,因此這是一個巨大的優勢。 計算機仍需要安裝 Oracle 客戶端,但這是唯一的外部依賴項。

我不會說 go-oci8 已經准備好生產了,但是當你知道它的局限性時它已經足夠穩定了。 一個例子是當同時運行多個 goroutine 時它​​會發生恐慌,所以如果你需要,你可能想要使用互斥鎖。

我基本上是按照這個教程安裝的: https : //gist.github.com/mnadel/8678269

最棘手的部分是正確創建 oci8.pc。 我的是:

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}

有些東西可能是多余的,我可能會嘗試在干凈的機器上改進它。

需要牢記的重要一點是,您應該對 Go 和 Oracle 客戶端使用相同的架構。 因此,如果您想使用 64 位版本的 Go,您還需要 64 位版本的 Oracle。 我有 32 位和 64 位版本,雖然 64 位是我的默認版本,但當我需要構建 32 位版本時,我使用 bat 文件來更改必要的路徑和環境變量。

可能值得花一些時間讓它工作,您可能會獲得比使用 ODBC 更好的性能。 我一直在以較高的數據量(獲取 5 多萬行的查詢)使用它,並且效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM