我认为有两种方法可以在 Go 中连接到 Oracle DB(在 Windows 上):
- github.com/tgulacsi/goracle
- github.com/mattn/go-oci8
但对于我这个水平的人(开源+golang的初学者)来说,这两种方法/驱动程序非常棘手。
必须经历所有这些在不同机器上的部署、开发等也是一个负担(也假设它会起作用)。
有没有更好的方法在 golang 中连接到 Oracle 数据库,或者如果没有,那么有人可以在高级视图或任何相关视图中向我解释,这会让这变得更容易吗?
指针将非常感激。
TQ.
如果您仍然感兴趣,我已经在 Windows 上使用 Go 和 Oracle 工作了几个月了。到目前为止我最喜欢的驱动程序是 go-oci8。它比 goracle 快得多,而且似乎更活跃。
我们的一些应用程序需要部署在我们无权访问的计算机上。两个本机 SQL 驱动程序都与应用程序一起编译,无需任何外部配置,因此这是一个巨大的优势。计算机仍需要安装 Oracle 客户端,但这是唯一的外部依赖项。
我不会说 go-oci8 已经准备好投入生产,但是当您知道它的局限性时,它就足够稳定了。一个例子是,当同时在多个 goroutine 上运行时,它会发生恐慌,因此如果您需要,您可能需要使用互斥体。
我基本上是按照这个教程来安装的:https://gist.github.com/mnadel/8678269 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+ 百万行的查询)中使用它,并且效果非常好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)