如何在go中连接到Oracle

him*_*ami 11 windows oracle cx-oracle oci8 go

我认为有两种方法可以在Go(Windows)上连接到Oracle DB:

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

但是对于我这个级别的人(初学者在开源+ golang),这两个方法/驱动程序非常棘手.

这也是一个负担,必须经历所有这些,以便在不同的机器上进行部署,开发等.(也假设它可以工作).

有没有更好的方法在golang中连接到Oracle数据库,或者如果没有,那么有人可以在高级视图或任何视图中向我解释这会使这更容易吗?

指针将非常感激.

TQ.

Ric*_*nia 9

如果您仍然感兴趣,我已经在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}
Run Code Online (Sandbox Code Playgroud)

有些东西可能是还原剂,我可能会尝试在干净的机器上进行改进.

要记住的一件重要事情是,您应该为Go和Oracle客户端使用相同的体系结构.因此,如果您想使用64位版本的Go,您还需要64位版本的Oracle.我有两个版本的32位和64位版本,而64位是我的默认版本,当我需要构建32位版本时,我使用bat文件来更改必要的路径和环境变量.

可能值得投入一些时间来使其工作,您可能会获得比使用ODBC更好的性能.我一直在使用它有一些高数据量(获取超过500万行的查询),它工作得很好.