Carga de dados – SQL Server X Interbase

A comunicação entre sistemas nos dias atuais é comum e pode ser feita de diversas formas. Dentre as principais podemos citar os populares Web services e a transferência de dados via importação/exportação de arquivos.

Os Web services, oriundos da popularização da Internet, da constante evolução das redes de computadores e da significativa baixa nos preços da banda para acesso à Web, estão sendo amplamente utilizados hoje em dia pois trazem muitas vantagens em sua utilização, dentre elas gostaria de destacar a interoperabilidade entre sistemas, ou seja, um sistema desenvolvido em Java pode perfeitamente consumir um Web service disponibilizado por outro sistema desenvolvido em, por exemplo, C#.Net.

web service.JPG

figura 1 – web services

 

Uma outra forma, que ainda é muito utilizada é a comunicação através da importação/exportação de arquivos. Neste caso, um sistema gera um arquivo em Layout pré definido, normalmente em formato texto (txt ou xml) para que um outro sistema possa importar os dados.

importacao_exportacao.JPG

figura 2 – importação/exportação de arquivo

 

No entanto, em nosso dia-a-dia podem ocorrer casos em que nos deparamos com sistemas legados que não dispõem de nenhum destes mecanismos, ou que dispõem de funcionalidades que não atendem as nossas demandas. Para estes casos, onde necessitamos de carregar dados de um sistema para outro, existe a possibilidade da utilização de um SGBD (em nosso artigo utilizaremos o SQL Server ) para a execução desta atividade.

Por exemplo, imagine uma situação onde uma determinada empresa de Administração de Imóveis possui em um de seus sistemas, um cadastro de todos os seus clientes. Inclua também neste estudo de caso, uma outra empresa de Cobrança que foi contratada para cobrar os clientes da Administradora de Imóveis, que encontram-se inadimplentes. Ambas possuem seus sistemas, que funcionam de forma independente, sendo que ambos os sistemas não dispõem de funcionalidades que habilitem a comunicação entre eles. Note que neste caso, precisaríamos cadastrar no sistema da empresa de Cobrança todos os clientes que encontram-se em situação de inadimplência que já estão cadastrados no sistema da Administradora de Imóveis. Neste caso, a Administradora de imóveis deverá gerar um relatório com todos os clientes inadimplentes e enviá-los para a que a empresa de Cobrança cadastre-os manualmente em seu sistema. Esta é uma solução ruim, pois imagine se existir um alto número de registros, quanto tempo levaria para que se refizesse tal cadastro? Temos ainda a possibilidade de erros que podem ocorrer durante a digitação.

Uma solução para esta situação seria a transferência de dados diretamente entre os Bancos de Dados de cada sistema, utilizando recursos de um SGBD.

Em nosso exemplo vamos dizer que a Administradora de Imóveis possua um sistema desenvolvido em ASP e acesse um Banco de Dados SQL Server e a empresa de Cobrança tenha um sistema em Delphi acessando Interbase. Precisaríamos então transferir os dados relativos aos clientes inadimplentes do Banco de Dados SQL Server para o Banco de Dados Interbase.

Para uma demonstração prática desta aplicação, iremos criar uma tabela "Cliente" numa base de dados do SQL Server (figura 3) e uma tabela "Clientes" numa base de dados do Interbase (figura 4). Simplificamos a estrutura das tabelas para manter o foco no principal, que é a transferência de dados entre Bancos de Dados diferentes:

tabela clientes sql server.JPG

figura 3 – SQL Server – tabela Cliente

 

tabela clientes Interbase.JPG

figura 4 – Interbase – tabela Clientes

 

 

Ao analisarmos as figuras devemos levar em consideração que o se campo status da figura 3 (SQL Server) tiver valor 1 (um) significará que o cliente está adimplente e se o valor for 0 (zero) o cliente estará inadimplente. Outra consideração importante é com relação ao endereço, note que a tabela da figura 3 existe um atributo chamado "endereco" para armazenar o nome do logradouro e complemento, um atributo "bairro", "cidade" e "estado" para armazenar os outros dados complementares ao endereço. Já na figura 4 temos apenas um atributo para o endereço, que deverá armazenar todos os campos que referenciam o endereço. Para resolver esta pequena incompatibilidade iremos utilizar de alguns recursos simples da Linguagem SQL.

Para efetuarmos a transferência de dados entre SGBD’s diferentes deveremos instalar um driver ODBC para o Interbase apontando para a base de dados do próprio Interbase, fazemos isto seguindo os seguintes passos:

  1. Baixe o driver ODBC XTG (gratuito) para Interbase em http://www.fireman.com.br/s-arq.php;

    2. Instale o driver abrindo o ZIP e executando o install.exe.


    3. Abra o Painel de Controle - em Ferramentas Administrativas - Fontes de Dados ODBC;

    4. Clique no botão Adicionar, e selecione o driver XTG Systems InterBase6 ODBC Driver;

    5. Atribua um nome (por exemplo, ODBC_SQL_INTERBASE);

    6. Em Interbase Path, informe NOME_DO_SERVIDOR:c:\...\NOME_DA_BASE.gdb e clique OK.

    Observação:
    -Em SERVIDOR deve ser informado apenas o NOME do servidor (sem as duas barras);

- O drive C: ou D: dependerá de onde você instalou localmente o Interbase no seu servidor (utilize a a visão da console do servidor).


Com driver devidamente instalado, iremos executar os seguintes procedimentos no Enterprise Manager:

  • Selecione o servidor, base de dados em seguida a tabela que criamos chamada "Cliente";

  • Selecione a opção "DATA TRANSFORMATION SERVICES";

  • Clique com o botão direito no item "LOCAL PACKAGES" e escolha a opção "NEW PACKAGE" será exibida a seguinte tela:

enterprise manager.JPG

figura 5 – Enterprise Manager

  • A seguir selecione o primeiro item da Paleta "CONNECTIONS" – "MICROSOFT OLE DB PROVIDER FOR SQL SERVER";

  • Será exibida a tela a seguir, de configuração da conexão, configure-a de acordo com os dados do seu servidor e clique em ok;

prpropriedades da conexao.JPG

figura 6 – Propriedades da Conexão – SQL Server

  • Selecione o último item da Paleta "CONNECTIONS" – "OTHER CONNECTIONS", será exibida a tela a seguir:

 

prpropriedades da conexao interbase.JPG

figura 6 – Propriedades da Conexão – Interbase

 

  • Em "DATA SOURCE" selecione "XTG SYSTEMS INTERBASE6 ODBC DRIVER", a seguir em "USER/SYSTEM DSN" selecione "ODBC_SQL_INTERBASE" ou outro nome que você tenha dado ao driver e digite um nome de usuário e senha para acesso ao banco de Dados Interbase (O usuário/senha default do Interbase é SYSDBA/masterkey) e clique em ok;

  • Em seguida na Paleta "TASK" clique em "TRANSFORM DATA TASK", clique no driver do SQL Server (source) e em seguida no driver do Interbase (destination), a tela do Enterprise Manager deverá ficar como a tela a seguir:

drivers.JPG

figura 7 – Source e Destination

 

  • Agora dê um duplo clique na seta que apareceu entre os drivers para configurarmos os dados que iremos transferir, será exibida a seguinte tela:

Source transformation.JPG

figura 7 – Configuração da fonte

  • Selecione a opção SQL query e digite a consulta conforme exibida na figura acima, repare que concatenamos os campos "endereco", "bairro", "cidade" e "estado", isto se faz necessário para este exemplo pois no DESTINATION só teremos um campo para armazenarmos o endereço completo;

  • Clique na guia DESTINATION e selecione a tabela de destino, neste caso será a tabela "CLIENTES", conforme demonstrado na figura abaixo:

destination transformation.JPG

figura 7 – Configuração do Destination

 

  • Selecione agora a guia Transformations onde serão executadas as associações entre Source e Destination, o SQL Server automaticamente executa a associação entre as colunas, clique em ok.

Transformations.JPG

figura 8 – Configuração do Transformations

  • Basta agora executar o PACKAGE e verificar que todos os clientes que estavam inadimplentes no SQL Server foram inseridos na tabela Clientes do Banco de Dados Interbase.

 

Conclusão:

Neste artigo podemos verificar na prática mais uma forma de carregar dados entre bases de dados diferentes, no nosso exemplo prático transportamos informações do SQL Server para o Interbase, utilizando um driver ODBC para o Interbase e algumas propriedades do DTS (Data Transformation Service) do Enterprise Manager. Vale ressaltar que o DTS pode ser utilizado para diversas outras aplicações, como leitura de dados de planilhas e arquivos texto e geração de planilhas e de arquivos texto.

Um forte abraço a todos e até um próximo artigo.