我认为Go中有两种连接Oracle DB的方法(在windows上):
但是对于我这样的人(开放source+golang的初学者)来说,这两种方法/驱动程序是非常棘手的。
在部署、在不同的机器上进行开发等方面,这也是一个负担(也假设它能工作)。
是否有更好的方法连接到golang中的Oracle db,或者如果没有,那么是否有人能在高层视图中向我解释,或者任何能使这件事变得更容易的观点?
我将非常感谢你的指点。
TQ。
发布于 2014-09-19 19:29:04
如果您还感兴趣,我已经在Windows上使用Go和Oracle了几个月了。到目前为止,我最喜欢的司机是去上班。它比大猩猩快得多,而且似乎更活跃。
我们的一些应用程序需要部署在我们无法访问的计算机上。这两个本机SQL驱动程序都是与应用程序一起编译的,不需要任何外部配置,因此这是一个巨大的优势。计算机仍然需要安装Oracle客户端,但这是唯一的外部依赖项。
我不会说go-oci8已经准备好生产了,但是当你知道它的局限性时,它就足够稳定了。一个例子是,当同时在多个goroutines上运行时,它会引起恐慌,因此,如果需要的话,您可能需要使用互斥对象。
我基本上遵循本教程来安装它: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+百万行的查询)使用它,它运行得非常好。
https://stackoverflow.com/questions/22217665
复制相似问题