SELECT TABLE_CATALOG AS BD
, TABLE_SCHEMA AS ESQUEMA_TABELA
, TABLE_NAME AS TABELA
, COLUMN_NAME AS COLUNA
, ORDINAL_POSITION AS ORD_POS
, DATA_TYPE AS TIPO
, CHARACTER_MAXIMUM_LENGTH AS TAM_CARACTER
, DATETIME_PRECISION AS TAM_DATA
, NUMERIC_PRECISION AS TAM_NUMERICO
, CASE WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL THEN
CAST(CHARACTER_MAXIMUM_LENGTH AS NUMERIC(16,6))
WHEN DATETIME_PRECISION IS NOT NULL THEN
CAST(DATETIME_PRECISION AS NUMERIC(16,6))
ELSE
CAST(CAST(NUMERIC_PRECISION AS VARCHAR) + '.' + CAST( NUMERIC_SCALE AS VARCHAR) AS NUMERIC(16,6))
END AS TAM
, CASE WHEN IS_NULLABLE = 'YES' THEN
'SIM'
ELSE
'NÃO'
END AS [NULO?]
, COLLATION_NAME AS COLLATION
, LEN(COLUMN_NAME) AS TAM_NOME_COLUNA
, LEN(TABLE_NAME) AS TAM_NOME_TABELA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 1=1
--Testa condição de identificadores maior que 30 caracteres usado na migração para Oracle ou sistemas multi SGBDR
--O clássico erro ORA-00972: identifier is too long. do Oracle, para quem trabalha com sistemas Multi SGBDR ou migração dados.
--AND LEN(COLUMN_NAME) > 30 OR LEN( TABLE_NAME) > 30
--Testa por nome de tabela
--AND TABLE_NAME = 'NOME_TABELA'
--Testa por coluna (campo)
--AND COLUMN_NAME = 'NOME_COLUNA'
Mais uma vez, espero ter ajudado.
Seja feliz e fique na Paz de Jesus Cristo.
DBA, MySql, Oracle, Postgres, SQL Server, DB2, BI, TI, Business Intelligence, Data Science, Machine Learning, IoT, Arduino
quarta-feira, 9 de julho de 2014
Como Listar Estrutura de Campos e Tabelas via query em SQL Server
Geralmente quando queremos saber informações sobre colunas e tabelas, no SQL Server usamos a store procedure sp_help [nome_tabela], mas o objetivo dessa query é filtrar determinadas condições a exemplo de tamanho de identificadores superiores a 30 caracteres, o clássico erro ORA-00972: identifier is too long. do Oracle, para quem trabalha com sistemas Multi SGBDR ou migração de dados, essa query resolve essa e outras perguntas.
Segue:
Assinar:
Comentários (Atom)