Script para comparar campos da tabela de origem com a de destino

/*
SCRIPT PARA A NECESSIDADE DE IMPORTAR DADOS DE UMA TABELA DE ORIGEM PARA O DESTINO, SENDO QUE NEM SEMPRE A TABELA DE
DESTINO POSSUIA AS MESMAS COLUNAS, ENTÃO EU TERIA QUE COMPARAR A TB DE ORIGEM COM A DESTINO.
AUTOR: César Carvalho
*/
DECLARE @ORIGEM VARCHAR (300) DECLARE @DESTINO VARCHAR (300) DECLARE @CMD VARCHAR(MAX)
SELECT @ORIGEM='Outubro_2013' -- TABELA DE ORIGEM
 
SELECT @DESTINO='emprestimos' -- TABELA DE DESTINO
 
SELECT COLUNAS.NAME+','
FROM SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
WHERE TABELAS.XTYPE = 'U'
AND TABELAS.NAME=@ORIGEM
AND COLUNAS.NAME IN
( SELECT COLUNAS.NAME
FROM SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
WHERE TABELAS.XTYPE = 'U'
AND TABELAS.NAME=@DESTINO);
 
--TB ORIGEM COM COLUNAS A SEREM IMPORTADAS
 
SELECT COUNT(COLUNAS.NAME) TB_ORIGEM_COLUNAS
FROM SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
WHERE TABELAS.XTYPE = 'U'
AND TABELAS.NAME=@ORIGEM;
 
--AND COLUNAS.NAME NOT LIKE 'SSMA_TimeStamp'; --FILTRO PARA RETIRAR ALGUM CAMPO
-- TB DESTINO COM COLUNAS A SEREM IMPORTADAS
 
SELECT COUNT(COLUNAS.NAME) TB_DESTINO_COLUNAS
FROM SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
WHERE TABELAS.XTYPE = 'U'
AND TABELAS.NAME=@ORIGEM
AND COLUNAS.NAME IN
( SELECT COLUNAS.NAME
FROM SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
WHERE TABELAS.XTYPE = 'U'
AND TABELAS.NAME=@DESTINO);
 
-- COLUNAS FALTANDO NA TABELA DE DESTINO
 
SELECT COLUNAS.NAME+',' COLUNAS_FALTANDO_TB_FINAL
FROM SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
WHERE TABELAS.XTYPE = 'U'
AND TABELAS.NAME=@ORIGEM
AND COLUNAS.NAME NOT IN
( SELECT COLUNAS.NAME
FROM SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
WHERE TABELAS.XTYPE = 'U'
AND TABELAS.NAME=@DESTINO);
 
--AND COLUNAS.NAME NOT LIKE 'SSMA_TimeStamp' --FILTRO PARA RETIRAR ALGUM CAMPO
SQL

Leave a Reply

Your email address will not be published. Required fields are marked *

search previous next tag category expand menu location phone mail time cart zoom edit close