godror基于ODPI-C的 oracle golang 驱动使用

摘要:
godror是一个很不错的oraclegolang驱动,基于ODPI-C编写,好处是我们需要需要依赖编译我们只需要安装oracleclient就可以了,不像go-oci8需要编译,同时目前也有一个纯golang的oracle驱动,但是目前还不是很稳定,以下是godror的参考使用参考代码packagemainimport("database/sql""flag""fmt"_"github.com/

godror 是一个很不错的oracle golang 驱动,基于ODPI-C 编写,好处是我们需要需要依赖编译
我们只需要安装oracle client 就可以了,不像go-oci8需要编译,同时目前也有一个纯golang 的
oracle驱动,但是目前还不是很稳定,以下是godror的参考使用

参考代码

package main
import (
"database/sql"
"flag"
"fmt"
_ "github.com/godror/godror"
"log"
)
var (
username  = flag.String("uname", "scott", "oracle username")
password  = flag.String("password", "tiger", "oracle password")
oraclehost = flag.String("oraclehost", "dbhost", "oracle database host")
oracleport = flag.Int("oracleport", 1521, "oracle database port")
dbname   = flag.String("dbname", "orclpdb1", "oracle database name")
)
func main() {
flag.Parse()
osqlInfo := fmt.Sprintf("%s/%s@%s:%d/%s", *username, *password, *oraclehost, *oracleport, *dbname)
db, err := sql.Open("godror", osqlInfo)
if err != nil {
log.Fatalf("connect oracle db error: %s:", err.Error())
}
rows, err := db.Query("select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') AS name from dual")
if err != nil {
fmt.Println("exec query error:", err.Error())
}
for rows.Next() {
var name string
rows.Scan(&name)
fmt.Println("fetch item:")
fmt.Println(name)
}
}

运行

go run main.go -uname <username> -password <password> -oraclehost <ip> -dbname <db>

docker 构建

使用了oracle 官方的linux 作为基础镜像

FROM golang:1.15-buster as build
WORKDIR /go/src/app
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn
COPY . .
RUN go build
FROM oraclelinux:7-slim
ARG release=19
ARG update=9
RUN yum -y install oracle-release-el7 && 
yum -y install oracle-instantclient${release}.${update}-basic && 
rm -rf /var/cache/yum
COPY --from=build /go/src/app/mygolang-oracle /mygolang-oracle
ENTRYPOINT [ "/mygolang-oracle" ]

说明

以上的docker 构建使用了多阶段,使用oraclelinux进行运行,主要是简单,而且内置了好多oracle 的依赖,不需要我们
进行多复杂的处理,sijms/go-ora 的golang纯golang 代码驱动是一个不错的选择,但是期待稳定

参考资料

https://github.com/rongfengliang/godror-golang-learning
https://godror.github.io/godror/doc/tuning.html#-query-performance
https://oracle.github.io/odpi/doc/installation.html#id10
https://github.com/godror/godror
https://hub.docker.com//oraclelinux
https://hub.docker.com/
/golang
https://github.com/sijms/go-ora

免责声明:文章转载自《godror基于ODPI-C的 oracle golang 驱动使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SAP PI 如何实现消息定义查询ABAP如何在abap中使用日志管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

golang channel 用法总结

goroutine 使用golang的channel之前,我们需要先了解go的goroutine。Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可。goroutine 是轻量级线程,相比线程开销更小,完全由 Go 语言负责调度,是 Go 支持并发的核心。如下所示,在go中我们可以很方便的开启并发执行。 package mai...

[转]oracle在删除表表空间用户时,如何释放磁盘空间

一、drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。 通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句 flashback table...

oracle 数据库复制

场景:      1、从OperateSystem用户下将数据库导入到新创建用户LsOperateSystem用户下,从Gsyl用户下将数据库导入到新创建用户LsZhmz用户下 创建命名空间和用户LsOperateSystem,并授权 create tablespace LsOperateSystem datafile 'E: ools ablespace...

企业管理器(OEM)介绍: Grid Control 和 Database Control

Oracle 自10g 以后,企业管理器(Oracle Enterprise Manager:OEM)变成了网页形式。 OEM 分两种:Grid Control(网格控制) 和 Database Control(数据库控制)。  Grid Control 是具有完整功能的全企业Oracle 生态系统管理工具。  Database Control是可以只作...

[转]Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误-高级

from : https://levy.at/blog/11 进阶篇 关闭HTTP的响应 level: intermediate 当你使用标准http库发起请求时,你得到一个http的响应变量。如果你不读取响应主体,你依旧需要关闭它。注意对于空的响应你也一定要这么做。对于新的Go开发者而言,这个很容易就会忘掉。 一些新的Go开发者确实尝试关闭响应主体,但...

Oracle面试题(基础篇)

1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性 2). oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-...