oracle 脚本go,Golang连接Oracle-Go语言中文社区

Golang连接Oracle

windows

一、安装MinGW

d47c266563084b1cdb92b48a8c5bde80.png

二、安装OCI

三、配置go-oci8

直接go get github.com/wendal/go-oci8(报错不用管),然后到gosrcgithub.com/wendalgo-oci8windows下,将pkg-config.exe拷贝到C:mingw-w64mingw64bin下,将oci8.pc复制到C:mingw-w64mingw64libpkg-config下,并且编辑oci8.pc:

# Package Information for pkg-config

prefix=修改为instantclient_11_1目录,如C:/androidtools/orcale/instantclient_12_2

exec_prefix=修改为instantclient_11_1目录,如C:/androidtools/orcale/instantclient_12_2

libdir=${exec_prefix}

includedir=${prefix}/sdk/include/

Name: OCI

Description: Oracle database engine

Version: 11.2

Libs: -L${libdir} -loci

Libs.private:

Cflags: -I${includedir}

53e3cc50922a62170995817915b6550f.png

四、设置环境变量

环境变量path下添加C:/androidtools/orcale/instantclient_12_2和C:mingw-w64mingw64bin的路径

添加PKG_CONFIG_PATH=C:mingw-w64mingw64libpkg-config

添加TNS_ADMIN=C:/androidtools/orcale/instantclient_12_2networkadmin

五、测试

go get github.com/mattn/go-oci8 执行不报错就对了 用这个驱动中文不乱码

package main

import (

"database/sql"

"fmt"

_ "github.com/mattn/go-oci8"

"log"

"os"

)

// func getDSN() string {

// var dsn string

// if len(os.Args) > 1 {

// dsn = os.Args[1]

// if dsn != "" {

// return dsn

// }

// }

// dsn = os.Getenv("GO_OCI8_CONNECT_STRING")

// if dsn != "" {

// return dsn

// }

// fmt.Fprintln(os.Stderr, `Please specifiy connection parameter in GO_OCI8_CONNECT_STRING environment variable,

// or as the first argument! (The format is user/name@host:port/sid)`)

// return "sys/123456@ORCL"

// }

func main() {

// 为log添加短文件名,方便查看行数

log.SetFlags(log.Lshortfile | log.LstdFlags)

log.Println("Oracle Driver example")

//os.Setenv("NLS_LANG", "")

// 用户名/密码@IP:端口/实例名

db, err := sql.Open("oci8", "song/123456@192.168.0.105:1521/ORCL")

if err != nil {

log.Fatal(err)

}

rows, err := db.Query("select 3.14, 'foo' from dual")

if err != nil {

log.Fatal(err)

}

defer db.Close()

for rows.Next() {

var f1 float64

var f2 string

rows.Scan(&f1, &f2)

log.Println(f1, f2) // 3.14 foo

}

rows.Close()

// 先删表,再建表

db.Exec("drop table sdata")

db.Exec("create table sdata(name varchar2(256))")

db.Exec("insert into sdata values('中文')")

db.Exec("insert into sdata values('1234567890ABCabc!@#$%^&*()_+')")

rows, err = db.Query("select * from sdata")

if err != nil {

log.Fatal(err)

}

for rows.Next() {

var name string

rows.Scan(&name)

log.Printf("Name = %s, len=%d", name, len(name))

}

rows.Close()

}

linux oci8

1,下载linux版OCI

cb6a700c88558216b1f5e8c80690086e.png

解压到/usr/lib下

622828bf8243a0ae0e547c764c22bbab.png

执行下面命令

ln /usr/lib/instantclient_12_2/libclntsh.so.12.1 /usr/lib/libclntsh.so

ln /usr/lib/instantclient_12_2/libocci.so.12.1 /usr/lib/libocci.so

ln /usr/lib/instantclient_12_2/libociei.so /usr/lib/libociei.so

ln /usr/lib/instantclient_12_2/libnnz12.so /usr/lib/libnnz12.so

安装pkg-config

在 /usr/lib/pkg-config 目录下创建文件 oci8.pc,内容如下:

# Package Information for pkg-config

prefix=/usr/lib/instantclient_12_2

exec_prefix=/usr/lib/instantclient_12_2

libdir=${exec_prefix}

includedir=${prefix}/sdk/include/

Name: OCI

Description: Oracle database engine

Version: 12.2

Libs: -L${libdir} -lclntsh

Libs.private:

Cflags: -I${includedir}

环境变量设置

vim /etc/profile

在最后加上

export ORACLE_HOME=/usr/lib/instantclient_12_2

export LD_LIBRARY_PATH=$ORACLE_HOME

export PKG_CONFIG_PATH=/usr/lib/pkg-config

source /etc/profile

执行驱动下载

go get github.com/mattn/go-oci8

mac

oci和oci sdk 下载地址:下载地址mac (下载instantclient-basic和instantclient-sdk)

1. 下载完成后解压

e0fb2d13cfc04f912c0161b4179cbfc9.png

2. 文件-前往文件夹/usr/local 创建pkg-config文件夹

03fef1ff069c2e98a9b9754e03a924e4.png

3. 文件夹下面创建oci8.pc文件

prefix=/Users/yhlyl/java/instantclient_12_1//你的路径

libdir=${prefix}

includedir=${prefix}/sdk/include/

Name: OCI

Description: Oracle database engine

Version: 12.1 //你的版本

Libs: -L${libdir} -lclntsh

Libs.private:

Cflags: -I${includedir}

4. 环境变量设置

vim .bash_profile

export ORACLE_HOME=/Users/yhlyl/java/instantclient_12_1

export LD_LIBRARY_PATH=$ORACLE_HOME

export PKG_CONFIG_PATH=/usr/local/pkg-config

source .bash_profile

go get github.com/mattn/go-oci8

5. 完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值