이동

2014-03-06 4 views
8
내가 (Windows에서) 이동에 오라클 DB에 연결하는 방법은 두 가지가 수집

오라클에 연결하는 방법 :이동

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

내 레벨 (open source + golang의 초보자)에게는이 두 가지 방법/드라이버가 매우 까다 롭습니다.

또한 배포, 다른 컴퓨터에서의 개발 등을 위해 모든 것을 수행해야하는 부담입니다 (또한 작동한다고 가정).

golang에서 Oracle DB에 연결하는 더 좋은 방법이 있습니까? 그렇지 않다면 누군가가 상위 수준보기 또는이보기를 더 쉽게 이해할 수있는보기를 설명 할 수 있습니까?

포인터는 대단히 감사하겠습니다.

TQ.

+0

대신 ODBC를 사용하기로 결정했습니다. 나는이 어댑터를 여기 아래에서 시도했고 지금까지 완벽하게 작동한다. 링크 : https://github.com/weigj/go-odbc – himekami

답변

6

아직도 관심이 있으신가요? 저는 Windows에서 Go와 Oracle을 몇 달 동안 사용해 왔습니다. 지금까지 내가 좋아하는 드라이버는 go-oci8입니다. 그것은 goracle보다 훨씬 빠르며 더 활동적인 것처럼 보입니다.

일부 응용 프로그램은 우리가 액세스 할 수없는 컴퓨터에 배포해야합니다. 두 네이티브 SQL 드라이버는 외부 구성 없이도 응용 프로그램과 함께 컴파일되므로 큰 이점입니다. 컴퓨터는 여전히 Oracle 클라이언트가 설치되어 있어야하지만, 이것이 유일한 외부 종속성입니다.

go-oci8은 아직 제작 준비가되어 있지 않다고 말하지만, 그 한계를 안다면 충분히 안정적입니다. 한 가지 예는 여러 goroutine을 동시에 실행할 때 패닉이 발생하므로 필요하면 뮤텍스를 사용하는 것이 좋습니다. https://gist.github.com/mnadel/8678269

헤쳐 나왔지 부분은 corretly 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 비트 버전을 빌드 할 때 필요한 경로와 환경 변수를 변경하기 위해 박쥐 파일을 사용합니다.

ODBC를 사용하는 것보다 훨씬 나은 성능을 얻으려면 시간을 투자 할 가치가 있습니다. 나는 다소 높은 데이터 볼륨 (5 백만 행을 가져 오는 쿼리)과 함께 사용하여 매우 잘 작동합니다.

+0

도움 주셔서 감사합니다. 지난 몇 달 간 일을 중단했습니다. .NET 프로그래머로 취업했다. – himekami

+0

샘플 코드를 제공 할 수 있습니까? 나는 미안하지만 나는 완전히 새롭다. 나는 어디에도 찾을 수 없다. –