如何连接到Oracle中去

我收集有两种方法可以连接到Oracle数据库(在Windows上):

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

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

这也是一个负担,通过所有的部署,在不同的机器上开发等(也假设它会工作)。

有没有更好的方式连接到甲骨文的数据库在golang或者如果没有人可以向我解释在高层次的观点或任何看法,这将使这更容易?

指针将非常感激。

TQ。

如果您仍然对此感兴趣,我已经在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位是我的默认我使用bat文件来更改必要的路径和环境变量,当我需要建立一个32位版本。

可能需要投入一些时间才能使其工作,您可能会获得比使用ODBC更好的性能。 我一直在使用它有点高的数据量(查询500万行以上),它工作得很好。