oracle环境见:
一、不翻墙安装golang.org/x/net
cd $GOPATH/src/golang.org/x/git clone https://github.com/golang/net.git
不安装golang.org/x/net后面安装GO的oracle驱动就出错
二、增加/opt/ora11g/instantclient_11_2/lib/pkgconfig/oci8.pc并把对应目录追加到PKG_CONFIG_PATH路径中:
sudo mkdir /opt/ora11g/instantclient_11_2/lib/pkgconfig sudo vi /opt/ora11g/instantclient_11_2/lib/pkgconfig/oci8.pccat /opt/ora11g/instantclient_11_2/lib/pkgconfig/oci8.pc
prefix=/opt/ora11g/instantclient_11_2exec_prefix=/opt/ora11g/instantclient_11_2/binlibdir=${prefix}/libincludedir=${prefix}/sdk/include Name: OCIDescription: Oracle database engineVersion: 11.2Libs: -L${libdir} -lclntshLibs.private: Cflags: -I${includedir}
.bashrc中加上:
export PKG_CONFIG_PATH=$ORACLE_HOME/lib/pkgconfig:$PKG_CONFIG_PATH
即oracle环境变量的设置变为:
export ORACLE_HOME=/opt/ora11g/instantclient_11_2export TNS_ADMIN=$ORACLE_HOME/network/adminexport NLS_LANG='simplified chinese_china'.UTF8export PATH=$ORACLE_HOME/bin:$PATHexport PKG_CONFIG_PATH=$ORACLE_HOME/lib/pkgconfig:$PKG_CONFIG_PATHalias sqlplus='/usr/bin/rlwrap sqlplus'
三、安装go的oracle驱动:
go get github.com/mattn/go-oci8
四、测试代码:
$ cat testora2.go package mainimport ( "database/sql" "fmt" _ "github.com/mattn/go-oci8")func main() { //修改成自己数据账号及密码 db, err := sql.Open("oci8", "scott/tiger@xe") checkErr(err) rows, err := db.Query("select EMPNO,ENAME, JOB,SAL from emp") checkErr(err) for rows.Next() { var EMPNO int var ENAME string var JOB string var SAL float32 err = rows.Scan(&EMPNO, &ENAME, &JOB, &SAL) checkErr(err) fmt.Println(EMPNO) fmt.Println(ENAME) fmt.Println(JOB) fmt.Println(SAL) fmt.Println("--------------") } db.Close()}func checkErr(err error) { if err != nil { panic(err) }}
五、运行:
$ go run testora2.go 7369SMITHCLERK800--------------7499ALLENSALESMAN1600--------------7521WARDSALESMAN1250--------------7566JONESMANAGER2975--------------7654MARTINSALESMAN1250--------------7698BLAKEMANAGER2850--------------7782CLARKMANAGER2450--------------7788SCOTTANALYST3000--------------7839KINGPRESIDENT5000--------------7844TURNERSALESMAN1500--------------7876ADAMSCLERK1100--------------7900JAMESCLERK950--------------7902FORDANALYST3000--------------7934MILLERCLERK1300--------------