为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:windows
【CPU】:x86
【问题描述】*:在用户usera下建了schema1,schema2,schema3...多个模式,每个模式下都有表tablea,请问如何获取指定模式如schema1下tablea表的字段名称,字段类型,长度(精度),是否允许空,缺省值,主键?不使用tabledef,因为是要在Java代码中使用。我使用的是下面语句,但是返回了所有模式下的tablea,不知道如何限定到指定模式,请大神帮忙。 SELECT
T2.TABLE_NAME AS tableName,
T2.COLUMN_NAME AS columnName,
T1.COMMENTS AS comments,
T2.DATA_TYPE AS dataType,
T2.DATA_LENGTH AS dataLength,
T2.NULLABLE AS nullable,
T2.DATA_DEFAULT AS dataDefault,
COLUMN_ID
FROM USER_COL_COMMENTS T1, USER_TAB_COLUMNS T2
WHERE T1.TABLE_NAME = T2.TABLE_NAME
AND T1.COLUMN_NAME=T2.COLUMN_NAME
AND T1.TABLE_NAME = 'tablea' and t1.owner='schema1'
ORDER BY T2.TABLE_NAME,T2.COLUMN_ID
1、用的是USER_视图,可以换成ALL_视图,然后where条件里面加个 OWNER='模式名' 的条件。
这样修改下试试看是否符合预期
SELECT T2.TABLE_NAME AS tableName,
T2.COLUMN_NAME AS columnName,
T1.COMMENTS AS comments,
T2.DATA_TYPE AS dataType,
T2.DATA_LENGTH AS dataLength,
T2.NULLABLE AS nullable,
T2.DATA_DEFAULT AS dataDefault,
COLUMN_ID
FROM ALL_TAB_COLUMNS T2
LEFT JOIN ALL_COL_COMMENTS T1
ON T1.COLUMN_NAME=T2.COLUMN_NAME
AND T1.OWNER= T2.OWNER
AND T1.TABLE_NAME = T2.TABLE_NAME
WHERE T2.OWNER = 'schema1'
AND T2.TABLE_NAME = 'tablea'
ORDER BY T2.TABLE_NAME,T2.COLUMN_ID
您好 单纯为了比对差异 可以考虑下使用DTS工具数据比对功能 谢谢
