Kết nối Golang vào Oracle Database
Tôi sẽ giới thiệu cho các bạn cách cài ngôn ngữ Go và Oracle Instan Client từ Oracle Linux yum server và sử dụng nó cùng với
Môi trường : CentOS 7
goracle
Driver để kết nối Go program tới Oracle Database.Môi trường : CentOS 7
1. Cài đặt Repository
$ sudo yum install -y oracle-golang-release-el7 oracle-release-el7
2. Cài đặt Go và kiểm tra
$ sudo yum -y install git gcc golang
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/opc/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/opc/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build280983252=/tmp/go-build -gno-record-gcc-switches"
$ go version
go version go1.12 linux/amd64
3.Cài đặt Oracle Instant Client và thêm thư viện vào Runtime Link Path.
Cài đặt Oracle Instant Client
sudo yum -y install oracle-instantclient18.3-basic
Thêm thư viện vào Runtime Link Path.
sudo sh -c "echo /usr/lib/oracle/18.3/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
4. Cài đặt goracle Driver.
$ go get gopkg.in/goracle.v2
5. Tạo một chương trình bằng Go để test kết nối.
Tạo một file
db.go
như sau. Lưu ý thay đổi connect string.package main
import (
"fmt"
"database/sql"
goracle "gopkg.in/goracle.v2"
)
func main(){
db, err := sql.Open("goracle", goracle.ConnectionParams{Username:"username", Password:"password", SID:"hostname:port/servicename"}.StringWithPassword())
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
rows,err := db.Query("select sysdate from dual")
if err != nil {
fmt.Println("Error running query")
fmt.Println(err)
return
}
defer rows.Close()
var thedate string
for rows.Next() {
rows.Scan(&thedate)
}
fmt.Printf("The date is: %s\n", thedate)
}
6. Chạy thử
$ go run db.go
The date is: 2019-03-21T17:58:49Z
Nếu ra được kết quả là ngày tháng là bạn đã thành công.
Nguồn
https://blogs.oracle.com/developers/how-to-connect-a-go-program-to-oracle-database-using-goracle