Como comparar dados de tabela campos diferentes no sql

Descrição detalhada do produto

 Compare dados para tabelas selecionadas em dois bancos de dados, visualize diferenças e publique alterações com rapidez e segurança. As configurações flexíveis de comparação e sincronização permitirão configurar uma chave de comparação personalizada e selecionar tabelas e campos para comparação e sincronização.

  • Comparar e sincronizar dados do banco de dados
  • Mapeie tabelas e colunas, independentemente de seus nomes
  • Visualize as diferenças entre tabelas comparadas
  • Salve seu plano de comparação
  • Crie chaves de comparação personalizadas
  • Utilitário de linha de comando incluído
  • Para bancos de dados Oracle, MS SQL Server, MS Azure, MS Access, PostgreSQL, MySQL, InterBase, Firebird e SQLite.

Comparação de dados

Compare as tabelas selecionadas.

Compare bancos de dados completos ou uma seleção de tabelas.

Compare os campos selecionados.

Você pode definir quais campos comparar. Único é que isso não significa que você não pode sincronizar campos excluídos. Você sempre pode sincronizar um campo, mesmo que não tenha sido incluído na lista de campos para comparar.

Comparação entre versões e sincronização.

Comparação e sincronização podem ocorrer entre duas versões diferentes do banco de dados.

Defina chaves de comparação personalizadas.

Uma chave de comparação é selecionada automaticamente se suas tabelas contiverem uma chave exclusiva correspondente. Você também pode definir sua própria chave de comparação (qualquer combinação dos campos dessa tabela).

Opções de comparação.

Controle a maneira como os dados são comparados. Ignore espaços, apare sequências de caracteres, faça a correspondência entre NULL e vazia, comparação sem distinção entre maiúsculas e minúsculas, etc.

Comparação rápida de grandes bancos de dados.

O uso otimizado da memória e as rotinas de comparação tornam o Datanamic DataDiff um dos produtos mais rápidos para grandes bancos de dados.

Suporta a comparação de dados binários.

Rotinas especiais garantem uma comparação rápida de dados binários. A grade de resultados da comparação inclui um visualizador especial para campos binários.

Filtragem de dados com cláusulas WHERE.

Você pode definir uma cláusula where em cada tabela de origem e / ou destino.

Compare os campos com diferentes tipos de dados.

Os dados são convertidos automaticamente de forma que possam ser comparados.

Mapeando tabelas e colunas.

Tabelas e colunas são mapeadas automaticamente. Você pode mapear manualmente qualquer tabela e coluna.

Exportar resultados de comparação.

Exporte os resultados da comparação para arquivos CSV.

Sincronização de dados

Suporte de integridade referencial.

O Datanamic DataDiff lida com dependências de dados e integridade referencial durante comparação e sincronização. Para acelerar a sincronização, você tem a opção de desativar chaves estrangeiras durante a sincronização.

Sincronização parcial.

A sincronização parcial permite sincronizar apenas as colunas selecionadas e / ou apenas os registros selecionados.

Sincronize dados binários.

A sincronização para dados binários é suportada quando você sincroniza diretamente no banco de dados.

Avisos no nível de registro para possíveis erros durante a sincronização.

Os avisos aparecem na grade de resultados da comparação quando a sincronização pode levar a dados inválidos. É o caso quando o campo de destino, por exemplo, requer um valor, mas o valor que será inserido é um valor NULL.

Excluir campos para sincronização no nível do projeto.

Na caixa de diálogo de opções do projeto, você pode definir uma lista de nomes de campos para os que não deseja sincronizar. Dessa forma, você não precisa excluir esses campos manualmente. Isso é muito útil para excluir colunas usadas para fins de auditoria.

SQL pré/pós sincronização.

Código SQL personalizado que será executado antes e / ou após o processo de sincronização real.

Opções de sincronização.

Controle a maneira como os dados são sincronizados. Desativar gatilhos, desativar chaves estrangeiras, número de registros por transação, etc.

Produtividade

Visão geral rápida das diferenças.

Navegação fácil de usar através das diferenças de dados codificadas por cores.

Comparação e sincronização automatizadas.

Um utilitário de linha de comando está incluído para automatizar o processo de comparação e sincronização de dados.

Orientado a projetos.

Salve seu plano de comparação de dados em um projeto DataDiff para reutilização posterior.

Detecção de alterações de metadados.

Você não precisa reconfigurar seu plano completo de comparação quando a estrutura de uma tabela de origem ou destino foi alterada. O Datanamic DataDiff fará isso por você automaticamente.

Conectividade do banco de dados

Suporte para vários bancos de dados.

  • Oracle 9i, 10g, 11g, 12c e 18c.
  • MySQL 4, 5, 6 e 8.
  • PostgreSQL 7, 8, 9, 10 e 11.
  • MS SQL Server 2000, 2005, 2008, 2012, 2014, 2016 e 2017.
  • MS Access 2000, 2003, 2007, 2010 e 2013.
  • Microsoft SQL Azure.
  • Firebird 1.x, 2.xe 3.x.
  • InterBase 6, 7, 2009 e XE.
  • SQLite 3.0 e superior.

Escrevi isto para comparar os resultados de uma visão desagradável que transportei da Oracle para o servidor SQL. Ele cria um par de tabelas temp, #DataVariances e #SchemaVariances, com diferenças em (você adivinhou) os dados nas tabelas e o esquema das próprias tabelas.

É necessário que ambas as tabelas tenham uma chave primária, mas você pode colocá-la no tempdb com uma coluna de identidade se as tabelas de origem não tiverem uma.

declare @TableA_ThreePartName nvarchar(max) = '' declare @TableB_ThreePartName nvarchar(max) = '' declare @KeyName nvarchar(max) = '' /*********************************************************************************************** Script to compare two tables and return differneces in schema and data. Author: Devin Lamothe 2017-08-11 ***********************************************************************************************/ set nocount on -- Split three part name into database/schema/table declare @Database_A nvarchar(max) = ( select left(@TableA_ThreePartName,charindex('.',@TableA_ThreePartName) - 1)) declare @Table_A nvarchar(max) = ( select right(@TableA_ThreePartName,len(@TableA_ThreePartName) - charindex('.',@TableA_ThreePartName,len(@Database_A) + 2))) declare @Schema_A nvarchar(max) = ( select replace(replace(@TableA_ThreePartName,@Database_A + '.',''),'.' + @Table_A,'')) declare @Database_B nvarchar(max) = ( select left(@TableB_ThreePartName,charindex('.',@TableB_ThreePartName) - 1)) declare @Table_B nvarchar(max) = ( select right(@TableB_ThreePartName,len(@TableB_ThreePartName) - charindex('.',@TableB_ThreePartName,len(@Database_B) + 2))) declare @Schema_B nvarchar(max) = ( select replace(replace(@TableB_ThreePartName,@Database_B + '.',''),'.' + @Table_B,'')) -- Get schema for both tables declare @GetTableADetails nvarchar(max) = ' use [' + @Database_A +'] select COLUMN_NAME , DATA_TYPE from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ''' + @Table_A + ''' and TABLE_SCHEMA = ''' + @Schema_A + ''' ' create table #Table_A_Details ( ColumnName nvarchar(max) , DataType nvarchar(max) ) insert into #Table_A_Details exec (@GetTableADetails) declare @GetTableBDetails nvarchar(max) = ' use [' + @Database_B +'] select COLUMN_NAME , DATA_TYPE from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = ''' + @Table_B + ''' and TABLE_SCHEMA = ''' + @Schema_B + ''' ' create table #Table_B_Details ( ColumnName nvarchar(max) , DataType nvarchar(max) ) insert into #Table_B_Details exec (@GetTableBDetails) -- Get differences in table schema select ROW_NUMBER() over (order by a.ColumnName , b.ColumnName) as RowKey , a.ColumnName as A_ColumnName , a.DataType as A_DataType , b.ColumnName as B_ColumnName , b.DataType as B_DataType into #FieldList from #Table_A_Details a full outer join #Table_B_Details b on a.ColumnName = b.ColumnName where a.ColumnName is null or b.ColumnName is null or a.DataType <> b.DataType drop table #Table_A_Details drop table #Table_B_Details select coalesce(A_ColumnName,B_ColumnName) as ColumnName , A_DataType , B_DataType into #SchemaVariances from #FieldList -- Get differences in table data declare @LastColumn int = (select max(RowKey) from #FieldList) declare @RowNumber int = 1 declare @ThisField nvarchar(max) declare @TestSql nvarchar(max) create table #DataVariances ( TableKey nvarchar(max) , FieldName nvarchar(max) , TableA_Value nvarchar(max) , TableB_Value nvarchar(max) ) delete from #FieldList where A_DataType in ('varbinary','image') or B_DataType in ('varbinary','image') while @RowNumber <= @LastColumn begin set @TestSql = ' select coalesce(a.[' + @KeyName + '],b.[' + @KeyName + ']) as TableKey , ''' + @ThisField + ''' as FieldName , a.[' + @ThisField + '] as [TableA_Value] , b.[' + @ThisField + '] as [TableB_Value] from [' + @Database_A + '].[' + @Schema_A + '].[' + @Table_A + '] a inner join [' + @Database_B + '].[' + @Schema_B + '].[' + @Table_B + '] b on a.[' + @KeyName + '] = b.[' + @KeyName + '] where ltrim(rtrim(a.[' + @ThisField + '])) <> ltrim(rtrim(b.[' + @ThisField + '])) or (a.[' + @ThisField + '] is null and b.[' + @ThisField + '] is not null) or (a.[' + @ThisField + '] is not null and b.[' + @ThisField + '] is null) ' insert into #DataVariances exec (@TestSql) set @RowNumber = @RowNumber + 1 set @ThisField = (select coalesce(A_ColumnName,B_ColumnName) from #FieldList a where RowKey = @RowNumber) end drop table #FieldList print 'Query complete. Select from #DataVariances to verify data integrity or #SchemaVariances to verify schemas match. Data types varbinary and image are not checked.'

Última postagem

Tag