Si vous êtes toujours intéressé, je travaille depuis quelques mois avec Go et Oracle sur Windows. Mon pilote préféré jusqu'à présent est go-oci8. Il est beaucoup plus rapide que goracle et semble être plus actif.
Certaines de nos applications doivent être déployées sur des ordinateurs auxquels nous n'avons pas accès. Les deux pilotes SQL natifs sont compilés avec l'application sans nécessiter de configuration externe, c'est donc un énorme avantage. L'ordinateur aura toujours besoin du client Oracle installé, mais c'est la seule dépendance externe.
Je ne dirai pas que go-oci8 est encore prêt pour la production, mais il est suffisamment stable lorsque vous connaissez ses limites. Un exemple est qu'il panique lorsqu'il s'exécute sur plusieurs goroutines simultanément, donc si vous en avez besoin, vous voudrez peut-être utiliser un mutex.
J'ai essentiellement suivi ce tutoriel pour l'installer :https://gist.github.com/mnadel/8678269
La partie la plus délicate a été de créer correctement oci8.pc. Le mien est :
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}
Certaines choses peuvent être redondantes, je pourrais essayer de l'améliorer sur une machine propre.
Une chose importante à garder à l'esprit est que vous devez utiliser la même architecture pour Go et le client Oracle. Donc, si vous souhaitez utiliser la version 64 bits de Go, vous aurez également besoin de la version 64 bits d'Oracle. J'ai des versions 32 et 64 bits des deux, et bien que 64 bits soit ma valeur par défaut, j'utilise des fichiers bat pour modifier les chemins et les variables d'environnement nécessaires lorsque j'ai besoin de créer une version 32 bits.
Cela vaut peut-être la peine d'investir du temps pour le faire fonctionner, vous obtiendrez probablement de bien meilleures performances qu'en utilisant ODBC. Je l'utilise avec un volume de données assez élevé (requêtes qui récupèrent plus de 5 millions de lignes) et cela fonctionne très bien.