2011-10-21 31 views
8

Tengo media docena de vistas en SQL Server que necesito replicar en Teradata, pero no he podido encontrar el TD equivalente de las tablas de metadatos SQL. Me gustaría replicar las siguientes funciones (que supongo que es bastante auto-explainatory):Recuperación de columna y otra información de metadatos en Teradata

select table_name, column_id ordinal_position, column_name, 
    data_type, char_length char_max_length, 
    data_precision numeric_precision, data_scale numeric_scale 
from user_tab_columns 

select name as FUNCTION_NAME 
from sys.objects 
where type_desc='SQL_SCALAR_FUNCTION' 

select TABLE_NAME as VIEW_NAME 
from INFORMATION_SCHEMA.VIEWS 

También me gustaría saber si hay alguna referencia utilizables Teradata en línea; todo lo que encuentro parece ser publicidad más que información práctica.

+0

Seguimiento: dbc.columns (como se recomienda emailenin) parece darme todo lo que necesito para la primera vista a excepción de la posición ordinal. ¿Guarda TD esa información? – William

+0

COLUMN_ID en DBC.Columns se puede usar para la posición ordinal de una columna en la tabla o vista. Por lo general, se siembra a 1025 y se incrementa desde allí. –

+0

Encontrará todos los manuales de Teradata en info.teradata.com, simplemente elija su versión. La mejor opción es el CD completo de documentación, incluida la Búsqueda completa. – dnoeth

Respuesta

12

Todas las tablas del sistema Teradata se almacenan en el esquema DBC.

Para las columnas, es dbc.columns

select * from dbc.columns 

Para las vistas, se dbc.tables con un filtro en una table_type 'V' columna de algo llamado (donde V significa Visto)

select * from dbc.tables 

No estoy seguro de cómo obtener todas las funciones en Teradata. Quien lo conoce, por favor edita esta respuesta.

En Teradata DBC.Tables contiene muchos de los objetos que existen en el sistema. (por ejemplo, Procedimientos almacenados, UDF, Desencadenadores, Macros, Vistas, Tablas, Índice de hash, Índice de unión, etc.) La columna Tipo de tabla se utiliza para identificar el tipo de objeto.

SELECT * 
FROM DBC.TABLES 
WHERE TABLEKIND = '<see below>' 

A = Aggregate Function 
B = Combined Aggregate Function and ordered analytical function 
D = JAR 
E = External Stored Procedure 
F = Standard Function 
G = Trigger 
H = Instance or Constructor Method 
I = Join Index 
J = Journal 
M = Macro 
N = Hash Index 
O = No Primary Index (Table) 
P = Stored Procedure 
Q = Queue Table 
R = Table Function 
S = Ordered Analytical Function 
T = Table 
U = User-defined data type 
V = View 
X = Authorization 
Y = GLOP Set 
+1

Se agregaron detalles sobre TableKind para encontrar otros objetos en una base de datos de Teradata. –

+0

Impresionante, gracias chicos. – William

+2

Solo un comentario: use 'dbc.tablesV' en lugar de' dbc.tables'. Las vistas que no son V están en desuso desde TD12, emulan los datos antiguos dictinarios con nombres de objetos en CHAR (30) LATIN. Todo es VARCHAR (128) UNICODE ahora y TD14.10 finalmente permite 128 nombres de objetos de caracteres. – dnoeth

Cuestiones relacionadas