!124 一些更新和bug

* fix: 代码合并
* feat:支持数据库版本兼容,目前兼容了oracle11g部分特性
* fix: 修改数据同步bug,数据sql里指定修改字段别,导致未正确记录修改字段值
* feat: 数据库迁移支持定时迁移和迁移到sql文件
This commit is contained in:
zongyangleo
2024-10-20 03:52:23 +00:00
committed by Coder慌
parent 6837a9c867
commit 6343173cf8
68 changed files with 3319 additions and 1587 deletions

View File

@@ -12,13 +12,17 @@ import (
)
func init() {
dbi.Register(dbi.DbTypeOracle, new(OraMeta))
dbi.Register(dbi.DbTypeOracle, new(Meta))
}
type OraMeta struct {
const (
DbVersionOracle11 dbi.DbVersion = "11"
)
type Meta struct {
}
func (md *OraMeta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
func (om *Meta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
err := d.IfUseSshTunnelChangeIpPort()
if err != nil {
return nil, err
@@ -75,13 +79,38 @@ func (md *OraMeta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
return nil, err
}
}
return conn, err
}
func (om *OraMeta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
func (om *Meta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
return &OracleDialect{dc: conn}
}
func (om *OraMeta) GetMetaData(conn *dbi.DbConn) *dbi.MetaDataX {
func (om *Meta) GetMetaData(conn *dbi.DbConn) *dbi.MetaDataX {
// 查询数据库版本信息,以做兼容性处理
if conn.Info.Version == "" && !conn.Info.DefaultVersion {
if conn.GetDb() != nil {
_, res, _ := conn.Query("select VERSION from v$instance")
if len(res) > 0 {
version := cast.ToString(res[0]["VERSION"])
// 11开头为11g版本
if strings.HasPrefix(version, "11") {
conn.Info.Version = DbVersionOracle11
conn.Info.DefaultVersion = false
} else {
conn.Info.DefaultVersion = true
}
}
}
}
if conn.Info.Version == DbVersionOracle11 {
md := &OracleMetaData11{}
md.dc = conn
md.version = DbVersionOracle11
return dbi.NewMetaDataX(md)
}
return dbi.NewMetaDataX(&OracleMetaData{dc: conn})
}