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:
Postar comentários (Atom)
Boaaa...
ResponderExcluirSucesso!
Excluir