From 0a668ac6c6d08b74b4203df644268a56f184df55 Mon Sep 17 00:00:00 2001 From: abc Date: Sun, 6 Apr 2025 10:45:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=BE=BE=E6=A2=A6=E4=BF=AE=E6=94=B9=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E6=97=B6=E5=8F=AA=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=9A=84=E6=A8=A1=E5=BC=8F=202.=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=8E=B7=E5=8F=96=E6=89=80=E6=9C=89=E8=A1=A8SQL?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=97=A0=E6=9D=83=E9=99=90=E8=AE=BF=E9=97=AEDBA=5FTABLES=203.?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=8E=B7=E5=8F=96=E6=89=80=E6=9C=89=E8=A7=86?= =?UTF-8?q?=E5=9B=BESQL=EF=BC=8C=E8=A7=A3=E5=86=B3=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=97=A0=E6=9D=83=E9=99=90=E8=AE=BF=E9=97=AE?= =?UTF-8?q?DBA=5FOBJECTS=204.=E8=B0=83=E6=95=B4=E8=8E=B7=E5=8F=96=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=A7=86=E5=9B=BE=E5=AE=9A=E4=B9=89SQL=EF=BC=8C?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7=E6=97=A0?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=AE=BF=E9=97=AEDBA=5FVIEWS=205.3.=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=8E=B7=E5=8F=96=E6=89=80=E6=9C=89=E5=88=97SQL?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E9=83=A8=E5=88=86=E8=A1=A8=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=8E=B7=E5=8F=96=E5=88=97=E5=8F=8A=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=98=AF=E5=90=A6=E8=87=AA=E5=A2=9E=206.?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=9B=B4=E6=96=B0=E5=88=97=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SmartSQL.Framework/Exporter/DmExporter.cs | 101 ++++++++++++++---- 1 file changed, 80 insertions(+), 21 deletions(-) diff --git a/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs b/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs index a644e41..6c7863e 100644 --- a/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs +++ b/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs @@ -63,7 +63,7 @@ namespace SmartSQL.Framework.Exporter { #region MyRegion var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); - var dataBaseList = dbClient.Ado.SqlQuery("select distinct object_name from all_objects where object_type = 'SCH';"); + var dataBaseList = dbClient.Ado.SqlQuery("SELECT NAME from SYSOBJECTS where TYPE$='SCH' and PID=UID()"); var dbList = new List(); dataBaseList.ForEach(x => { @@ -91,21 +91,18 @@ namespace SmartSQL.Framework.Exporter #region MyRegion var tables = new Tables(); var tbSql = $@"SELECT - a.table_name AS NAME, - b.comments AS Description + table_name AS NAME, + comments AS Description, + a.Created as CreateDate , + ifnull(a.LAST_DDL_TIME,a.CREATED) as ModifyDate FROM - dba_tables AS a - LEFT OUTER JOIN USER_TAB_COMMENTS b - ON - a.table_name = b.table_name + ALL_OBJECTS a LEFT JOIN + ALL_TAB_COMMENTS b + on a.OBJECT_NAME=b.TABLE_NAME WHERE - a.table_name!='HELP' - AND a.table_name NOT LIKE '%$%' - AND a.table_name NOT LIKE 'LOGMNRC_%' - AND a.table_name!='LOGMNRP_CTAS_PART_MAP' - AND a.table_name!='LOGMNR_LOGMNR_BUILDLOG' - AND a.table_name!='SQLPLUS_PRODUCT_PROFILE' - AND a.Owner = '{DbName}'"; + TABLE_TYPE='TABLE' + AND a.OWNER = '{DbName}' + AND b.OWNER = '{DbName}'"; var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); var tableList = dbClient.SqlQueryable(tbSql).ToList(); tableList.ForEach(tb => @@ -141,14 +138,15 @@ namespace SmartSQL.Framework.Exporter a.Object_Name as Name , b.Comments as Description, a.Created as CreateDate , - a.Created as ModifyDate + ifnull(a.LAST_DDL_TIME,a.CREATED) as ModifyDate from - dba_objects as a - left join USER_TAB_COMMENTS as b + all_objects as a + left join ALL_TAB_COMMENTS as b on a.Object_Name=b.table_name where - OWNER = '{DbName}' + a.OWNER = '{DbName}' + and b.OWNER = '{DbName}' and Object_type='VIEW'"; var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); var viewList = dbClient.SqlQueryable(tbSql).ToList(); @@ -191,7 +189,54 @@ namespace SmartSQL.Framework.Exporter { #region MyRegion var columns = new Columns(500); - var viewList = _dbClient.DbMaintenance.GetColumnInfosByTableName(objectId); + // var viewList = _dbClient.DbMaintenance.GetColumnInfosByTableName(objectId); + var sql = $@"select + distinct 0 as TableId, + A.Table_Name AS TableName, + A.COLUMN_ID AS DbColumnId, + A.column_name AS DbColumnName, + A.data_type AS DataType, + A.data_length AS Length, + A.Data_Default AS DefaultValue, + B.comments AS ColumnDescription, + A.data_scale AS Scale, + case when E.constraint_type = 'P' then true else false end AS IsPrimaryKey, + case when A.nullable = 'Y' then true else false end AS IsNullable, + case when ident.FLAG = 1 then true else false end AS IsIdentity + from + user_tab_columns AS A + left join user_col_comments AS B on A.COLUMN_NAME = b.column_name + left join ( + select + t1.column_name, + t1.table_name, + t2.constraint_type + from + user_ind_columns AS t1 + left join user_constraints AS t2 on t1.index_name = t2.index_name + ) AS E on A.Table_Name = E.table_name and A.column_name = E.column_name + LEFT JOIN ( + select + SO.NAME TABLE_NAME, + SCO.NAME COLUMN_NAME, + 1 FLAG + from + SYSCOLUMNS SCO + JOIN SYSOBJECTS SO ON SCO.ID = SO.id AND SO.SUBTYPE$ = 'UTAB' + WHERE + SCO.INFO2 & 0x0001 = 1 + and sf_get_schema_name_by_id(SO.SCHID) = '{DbName}' + and SO.NAME = '{objectId}' + ) ident on ident.COLUMN_NAME = a.COLUMN_NAME + where + A.COLUMN_NAME = b.column_name + and A.Table_Name = B.Table_Name + and A.Table_Name = '{objectId}' + and B.OWNER = '{DbName}' + ORDER BY + DbColumnId"; + var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); + var viewList = dbClient.SqlQueryable(sql).ToList(); viewList.ForEach(v => { if (columns.ContainsKey(v.DbColumnName)) @@ -255,7 +300,7 @@ namespace SmartSQL.Framework.Exporter 'View' as Type, text as definition from - dba_Views + All_Views where owner = '{DbName}' and view_name = '{objectId}'"; @@ -331,7 +376,21 @@ namespace SmartSQL.Framework.Exporter public override bool UpdateColumnRemark(Column columnInfo, string remark, DbObjectType objectType = DbObjectType.Table) { - throw new NotImplementedException(); + var result = false; + if (objectType == DbObjectType.Table) + { + //result = _dbClient.DbMaintenance.AddColumnRemark("\""+columnInfo.ObjectName+"\"","\""+columnInfo.ObjectId+"\"",remark); + result = _dbClient.DbMaintenance.AddColumnRemark(columnInfo.ObjectName,columnInfo.ObjectId,remark); + } + if (objectType == DbObjectType.View) + { + throw new NotSupportedException(); + } + if (objectType == DbObjectType.Proc) + { + throw new NotSupportedException(); + } + return result; } public override bool UpdateObjectRemark(string objectName, string remark, DbObjectType objectType = DbObjectType.Table) -- Gitee