mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 16:00:25 +08:00
Merge branch 'dev' of https://gitee.com/objs/mayfly-go into dev
This commit is contained in:
@@ -43,14 +43,14 @@ type DMDialect struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (pd *DMDialect) GetDbNames() ([]string, error) {
|
func (pd *DMDialect) GetDbNames() ([]string, error) {
|
||||||
_, res, err := pd.dc.Query("SELECT name AS dbname FROM v$database")
|
_, res, err := pd.dc.Query("SELECT name AS DBNAME FROM v$database")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
databases := make([]string, 0)
|
databases := make([]string, 0)
|
||||||
for _, re := range res {
|
for _, re := range res {
|
||||||
databases = append(databases, anyx.ConvString(re["dbname"]))
|
databases = append(databases, anyx.ConvString(re["DBNAME"]))
|
||||||
}
|
}
|
||||||
|
|
||||||
return databases, nil
|
return databases, nil
|
||||||
@@ -66,11 +66,11 @@ func (pd *DMDialect) GetTables() ([]Table, error) {
|
|||||||
tables := make([]Table, 0)
|
tables := make([]Table, 0)
|
||||||
for _, re := range res {
|
for _, re := range res {
|
||||||
tables = append(tables, Table{
|
tables = append(tables, Table{
|
||||||
TableName: re["tableName"].(string),
|
TableName: re["TABLE_NAME"].(string),
|
||||||
TableComment: anyx.ConvString(re["tableComment"]),
|
TableComment: anyx.ConvString(re["TABLE_COMMENT"]),
|
||||||
CreateTime: anyx.ConvString(re["createTime"]),
|
CreateTime: anyx.ConvString(re["CREATE_TIME"]),
|
||||||
TableRows: anyx.ConvInt(re["tableRows"]),
|
TableRows: anyx.ConvInt(re["tableRows"]),
|
||||||
DataLength: anyx.ConvInt64(re["dataLength"]),
|
DataLength: anyx.ConvInt64(re["DATA_LENGTH"]),
|
||||||
IndexLength: anyx.ConvInt64(re["indexLength"]),
|
IndexLength: anyx.ConvInt64(re["indexLength"]),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -95,14 +95,14 @@ func (pd *DMDialect) GetColumns(tableNames ...string) ([]Column, error) {
|
|||||||
columns := make([]Column, 0)
|
columns := make([]Column, 0)
|
||||||
for _, re := range res {
|
for _, re := range res {
|
||||||
columns = append(columns, Column{
|
columns = append(columns, Column{
|
||||||
TableName: re["tableName"].(string),
|
TableName: re["TABLE_NAME"].(string),
|
||||||
ColumnName: re["columnName"].(string),
|
ColumnName: re["COLUMN_NAME"].(string),
|
||||||
ColumnType: anyx.ConvString(re["columnType"]),
|
ColumnType: anyx.ConvString(re["COLUMN_TYPE"]),
|
||||||
ColumnComment: anyx.ConvString(re["columnComment"]),
|
ColumnComment: anyx.ConvString(re["COLUMN_COMMENT"]),
|
||||||
Nullable: anyx.ConvString(re["nullable"]),
|
Nullable: anyx.ConvString(re["NULLABLE"]),
|
||||||
ColumnKey: anyx.ConvString(re["columnKey"]),
|
ColumnKey: anyx.ConvString(re["COLUMN_KEY"]),
|
||||||
ColumnDefault: anyx.ConvString(re["columnDefault"]),
|
ColumnDefault: anyx.ConvString(re["COLUMN_DEFAULT"]),
|
||||||
NumScale: anyx.ConvString(re["numScale"]),
|
NumScale: anyx.ConvString(re["NUM_SCALE"]),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return columns, nil
|
return columns, nil
|
||||||
@@ -135,12 +135,12 @@ func (pd *DMDialect) GetTableIndex(tableName string) ([]Index, error) {
|
|||||||
indexs := make([]Index, 0)
|
indexs := make([]Index, 0)
|
||||||
for _, re := range res {
|
for _, re := range res {
|
||||||
indexs = append(indexs, Index{
|
indexs = append(indexs, Index{
|
||||||
IndexName: re["indexName"].(string),
|
IndexName: re["INDEX_NAME"].(string),
|
||||||
ColumnName: anyx.ConvString(re["columnName"]),
|
ColumnName: anyx.ConvString(re["COLUMN_NAME"]),
|
||||||
IndexType: anyx.ConvString(re["indexType"]),
|
IndexType: anyx.ConvString(re["INDEX_TYPE"]),
|
||||||
IndexComment: anyx.ConvString(re["indexComment"]),
|
IndexComment: anyx.ConvString(re["INDEX_COMMENT"]),
|
||||||
NonUnique: anyx.ConvInt(re["nonUnique"]),
|
NonUnique: anyx.ConvInt(re["NON_UNIQUE"]),
|
||||||
SeqInIndex: anyx.ConvInt(re["seqInIndex"]),
|
SeqInIndex: anyx.ConvInt(re["SEQ_IN_INDEX"]),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 把查询结果以索引名分组,索引字段以逗号连接
|
// 把查询结果以索引名分组,索引字段以逗号连接
|
||||||
@@ -169,8 +169,38 @@ func (pd *DMDialect) GetCreateTableDdl(tableName string) (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
// 建表ddl
|
||||||
|
var builder strings.Builder
|
||||||
|
for _, re := range res {
|
||||||
|
builder.WriteString(re["COLUMN_VALUE"].(string))
|
||||||
|
}
|
||||||
|
|
||||||
return res[0]["COLUMN_VALUE"].(string), nil
|
// 表注释
|
||||||
|
_, res, err = pd.dc.Query(fmt.Sprintf("select COMMENTS from USER_TAB_COMMENTS where TABLE_TYPE='TABLE' and TABLE_NAME = '%s'", tableName))
|
||||||
|
if res != nil {
|
||||||
|
for _, re := range res {
|
||||||
|
// COMMENT ON TABLE "SYS_MENU" IS '菜单表';
|
||||||
|
tableComment := fmt.Sprintf("\n\nCOMMENT ON TABLE \"%s\" IS '%s';\n", tableName, re["COMMENTS"].(string))
|
||||||
|
builder.WriteString(tableComment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 字段注释
|
||||||
|
fieldSql := fmt.Sprintf(`
|
||||||
|
SELECT COLUMN_NAME, COMMENTS
|
||||||
|
FROM USER_COL_COMMENTS
|
||||||
|
WHERE OWNER = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
||||||
|
AND TABLE_NAME = '%s'
|
||||||
|
`, tableName)
|
||||||
|
_, res, err = pd.dc.Query(fieldSql)
|
||||||
|
if res != nil {
|
||||||
|
for _, re := range res {
|
||||||
|
// COMMENT ON COLUMN "SYS_MENU"."BIZ_CODE" IS '业务编码,应用编码1';
|
||||||
|
fieldComment := fmt.Sprintf("\nCOMMENT ON COLUMN \"%s\".\"%s\" IS '%s';", tableName, re["COLUMN_NAME"].(string), re["COMMENTS"].(string))
|
||||||
|
builder.WriteString(fieldComment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return builder.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pd *DMDialect) GetTableRecord(tableName string, pageNum, pageSize int) ([]string, []map[string]any, error) {
|
func (pd *DMDialect) GetTableRecord(tableName string, pageNum, pageSize int) ([]string, []map[string]any, error) {
|
||||||
@@ -190,7 +220,7 @@ func (pd *DMDialect) GetSchemas() ([]string, error) {
|
|||||||
}
|
}
|
||||||
schemaNames := make([]string, 0)
|
schemaNames := make([]string, 0)
|
||||||
for _, re := range res {
|
for _, re := range res {
|
||||||
schemaNames = append(schemaNames, anyx.ConvString(re["schemaName"]))
|
schemaNames = append(schemaNames, anyx.ConvString(re["SCHEMA_NAME"]))
|
||||||
}
|
}
|
||||||
return schemaNames, nil
|
return schemaNames, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
--DM_DB_SCHEMAS 库schemas
|
--DM_DB_SCHEMAS 库schemas
|
||||||
select
|
select
|
||||||
distinct owner as schemaName
|
distinct owner as SCHEMA_NAME
|
||||||
from dba_objects
|
from dba_objects
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
--DM_TABLE_INFO 表详细信息
|
--DM_TABLE_INFO 表详细信息
|
||||||
select
|
select
|
||||||
a.object_name as tableName,
|
a.object_name as TABLE_NAME,
|
||||||
b.comments as tableComment,
|
b.comments as TABLE_COMMENT,
|
||||||
a.created as createTime,
|
a.created as CREATE_TIME,
|
||||||
TABLE_USED_SPACE((SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID)), a.object_name)*page() as dataLength
|
TABLE_USED_SPACE((SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID)), a.object_name)*page() as DATA_LENGTH
|
||||||
from dba_objects a
|
from dba_objects a
|
||||||
JOIN USER_TAB_COMMENTS b ON b.TABLE_TYPE='TABLE' and a.object_name = b.TABLE_NAME
|
LEFT JOIN USER_TAB_COMMENTS b ON b.TABLE_TYPE='TABLE' and a.object_name = b.TABLE_NAME
|
||||||
where a.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
where a.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
||||||
and a.object_type = 'TABLE'
|
and a.object_type = 'TABLE' and a.status = 'VALID'
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
--DM_INDEX_INFO 表索引信息
|
--DM_INDEX_INFO 表索引信息
|
||||||
select
|
select
|
||||||
a.index_name as indexName,
|
a.index_name as INDEX_NAME,
|
||||||
a.index_type as indexType,
|
a.index_type as INDEX_TYPE,
|
||||||
case when a.uniqueness = 'UNIQUE' then 1 else 0 end as nonUnique,
|
case when a.uniqueness = 'UNIQUE' then 1 else 0 end as NON_UNIQUE,
|
||||||
indexdef(b.object_id,1) as indexDef,
|
indexdef(b.object_id,1) as INDEX_DEF,
|
||||||
c.column_name as columnName,
|
c.column_name as COLUMN_NAME,
|
||||||
c.column_position as seqInIndex,
|
c.column_position as SEQ_IN_INDEX,
|
||||||
'无' as indexComment
|
'无' as INDEX_COMMENT
|
||||||
FROM DBA_INDEXES a
|
FROM DBA_INDEXES a
|
||||||
JOIN dba_objects b on a.owner = b.owner and b.object_name = a.index_name and b.object_type = 'INDEX'
|
LEFT JOIN dba_objects b on a.owner = b.owner and b.object_name = a.index_name and b.object_type = 'INDEX'
|
||||||
JOIN DBA_IND_COLUMNS c on a.owner = c.table_owner and a.index_name = c.index_name and a.TABLE_NAME = c.table_name
|
LEFT JOIN DBA_IND_COLUMNS c on a.owner = c.table_owner and a.index_name = c.index_name and a.TABLE_NAME = c.table_name
|
||||||
|
|
||||||
WHERE a.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
WHERE a.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
||||||
and a.TABLE_NAME = '%s'
|
and a.TABLE_NAME = '%s'
|
||||||
@@ -33,27 +33,34 @@ WHERE a.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
|||||||
order by a.TABLE_NAME, a.index_name, c.column_position asc
|
order by a.TABLE_NAME, a.index_name, c.column_position asc
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
--DM_COLUMN_MA 表列信息
|
--DM_COLUMN_MA 表列信息
|
||||||
select a.table_name as tableName,
|
select a.table_name as TABLE_NAME,
|
||||||
a.column_name as columnName,
|
a.column_name as COLUMN_NAME,
|
||||||
case when a.NULLABLE = 'Y' then 'YES' when a.NULLABLE = 'N' then 'NO' else 'NO' end as nullable,
|
case when a.NULLABLE = 'Y' then 'YES' when a.NULLABLE = 'N' then 'NO' else 'NO' end as NULLABLE,
|
||||||
case
|
case
|
||||||
when a.char_col_decl_length > 0 then concat(a.data_type, '(', a.char_col_decl_length, ')')
|
when a.char_col_decl_length > 0 then concat(a.data_type, '(', a.char_col_decl_length, ')')
|
||||||
when a.data_precision > 0 and a.data_scale > 0
|
when a.data_precision > 0 and a.data_scale > 0
|
||||||
then concat(a.data_type, '(', a.data_precision, ',', a.data_scale, ')')
|
then concat(a.data_type, '(', a.data_precision, ',', a.data_scale, ')')
|
||||||
else a.data_type end
|
else a.data_type end
|
||||||
as columnType,
|
as COLUMN_TYPE,
|
||||||
b.comments as columnComment,
|
b.comments as COLUMN_COMMENT,
|
||||||
a.data_default as columnDefault,
|
a.data_default as COLUMN_DEFAULT,
|
||||||
a.data_scale as numScale,
|
a.data_scale as NUM_SCALE,
|
||||||
case when t.COL_NAME = a.column_name then 'PRI' else '' end as columnKey
|
case when t.COL_NAME = a.column_name then 'PRI' else '' end as COLUMN_KEY
|
||||||
from dba_tab_columns a
|
from dba_tab_columns a
|
||||||
join user_col_comments b on b.owner = a.owner and b.table_name = a.table_name and a.column_name = b.column_name
|
left join user_col_comments b
|
||||||
join (select b.owner, b.table_name, a.name COL_NAME
|
on b.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID)) and b.table_name = a.table_name and
|
||||||
from SYS.SYSCOLUMNS a,
|
a.column_name = b.column_name
|
||||||
dba_tables b,
|
left join (select b.owner, b.table_name, a.name COL_NAME
|
||||||
sys.sysobjects c
|
from SYS.SYSCOLUMNS a,
|
||||||
where a.INFO2 & 0x01 = 0x01
|
dba_tables b,
|
||||||
and a.id=c.id and c.name = b.table_name) t on t.owner = a.owner and t.table_name = a.table_name
|
sys.sysobjects c,
|
||||||
|
sys.sysobjects d
|
||||||
|
where a.INFO2 & 0x01 = 0x01
|
||||||
|
and a.id=c.id and d.type$ = 'SCH' and d.id = c.schid
|
||||||
|
and b.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
||||||
|
and c.schid = ( select id from sys.sysobjects where type$ = 'SCH' and name = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID)))
|
||||||
|
and c.name = b.table_name) t
|
||||||
|
on t.table_name = a.table_name
|
||||||
where a.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
where a.owner = (SELECT SF_GET_SCHEMA_NAME_BY_ID(CURRENT_SCHID))
|
||||||
and a.table_name in (%s)
|
and a.table_name in (%s)
|
||||||
order by a.table_name, a.column_id
|
order by a.table_name, a.column_id
|
||||||
Reference in New Issue
Block a user