sql >> Databáze >  >> RDS >> Oracle

Jak se připojit k Oracle in go

Pokud máte stále zájem, už pár měsíců pracuji s Go a Oracle na Windows. Můj oblíbený ovladač je zatím go-oci8. Je mnohem rychlejší než goracle a zdá se, že je aktivnější.

Některé z našich aplikací je třeba nasadit na počítačích, ke kterým nemáme přístup. Oba nativní SQL ovladače jsou kompilovány s aplikací bez nutnosti jakékoli externí konfigurace, což je obrovské plus. Počítač bude stále potřebovat nainstalovaného klienta Oracle, ale to je jediná externí závislost.

Neříkám, že go-oci8 je ještě připraven na výrobu, ale je dostatečně stabilní, když znáte jeho omezení. Jedním z příkladů je, že při běhu na více goroutech současně zpanikaří, takže pokud potřebujete, možná budete chtít použít mutex.

Při instalaci jsem v podstatě postupoval podle tohoto návodu:https://gist.github.com/mnadel/8678269

Nejsložitější částí bylo správné vytvoření oci8.pc. Můj je:

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}

Některé věci mohou být nadbytečné, mohl bych to zkusit vylepšit na čistém počítači.

Důležité je mít na paměti, že byste měli používat stejnou architekturu pro Go a klienta Oracle. Pokud tedy chcete používat 64bitovou verzi Go, budete potřebovat také 64bitovou verzi Oracle. Mám 32bitovou i 64bitovou verzi obou, a přestože je 64bitová verze moje výchozí, používám soubory bat ke změně nezbytných cest a proměnných prostředí, když potřebuji vytvořit 32bitovou verzi.

Možná by stálo za to investovat nějaký čas, aby to fungovalo, pravděpodobně získáte mnohem lepší výkon než pomocí ODBC. Používám jej s poněkud vysokým objemem dat (dotazy, které načítají více než 5 milionů řádků) a funguje velmi dobře.




  1. ukládání peněžních částek v mysql

  2. T-SQL vs SQL

  3. Vraťte hledaná data ze sqlite

  4. jak svázat hodnoty INSERT INTO mysql perl