Alguns cenários podem fazer com que você precise encontrar colunas em um banco de dados. Por exemplo: Análise exploratória ou quando o banco de dados não está documentado e cresceu demais.

Geralmente quando estamos analisando um banco de dados para BI, não trabalhamos com o banco de produção, mas sim uma cópia. E é muito comum que você tenha que se sozinho virar nesse processo.

Você pode querer encontrar onde estão armazenadas as vendas, clientes, compras, fornecedores… etc. Nos exemplos estou usando o banco de dados do ERP OneBoss.

Neste artigo vamos ver como encontrar objetos no banco de dados SQL Server, usando schemas. A lógica para bancos Oracle, PostgreSQL é a mesma. Só muda onde procurar.

No management studio, abra uma consulta (New Query) e insira o código abaixo:

USE Mizusoft
DECLARE @ColumnName NVARCHAR(128) = 'nome'
SELECT
TABLE_NAME, COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME LIKE '%' + @ColumnName + '%'
ORDER BY
TABLE_NAME

O resultado gerado deverá ser algo assim:

Fiz um outro código que poderá ajudar a encontrar tanto tabela quanto colunas com determinado texto:

USE Mizusoft
DECLARE @TextToSearch NVARCHAR(128) = 'estoque'
SELECT
TABLE_NAME, COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME LIKE '%' + @TextToSearch + '%' OR
TABLE_NAME LIKE '%' + @TextToSearch + '%'
ORDER BY
TABLE_NAME

O resultado gerado deverá ser o seguinte:

Note que neste segundo caso, a consulta retornou as tabelas tbl043_operacoes_X_contas_estoque e tbl053_vendas, que tem campos contendo no nome o texto “estoque” mas também a tabela 043 tem estoque no próprio nome pesquisado.

Em um exemplo bastante comum, veja como consultar onde temos campos (se houvesse tabela com este nome também seria retornada na pesquisa) com o nome T030_FK_GUID_filial.

USE Mizusoft
DECLARE @TextToSearch NVARCHAR(128) = 'T030_FK_GUID_filial'
SELECT
	TABLE_NAME, COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS
WHERE 
	COLUMN_NAME LIKE '%' + @TextToSearch + '%' OR
	TABLE_NAME LIKE '%' + @TextToSearch + '%'
ORDER BY 
	TABLE_NAME

O resultado retornado deve ser algo assim:

Tags: