Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Transformação de divisão condicional:exporte dados do SQL Server para bancos de dados Oracle e MySQL


Neste artigo, expliquei como podemos dividir e exportar dados da tabela de banco de dados SQL Server em bancos de dados Oracle e MySQL. Esse processo é baseado na condição definida no SSIS como “transformação de divisão condicional ”. A transformação de divisão condicional é como a instrução case de qualquer linguagem de programação. Usando condicional, podemos redirecionar a saída de um componente em vários destinos com base em uma condição definida no componente de divisão condicional.

Configuração de demonstração


Podemos recuperar dados de várias plataformas de banco de dados usando a conexão ODBC enquanto usamos as ferramentas de dados do SQL Server. A maioria das plataformas de banco de dados fornece seus drivers de conectividade que podem ser usados ​​para configurar a conexão entre o aplicativo e o banco de dados.

Vou exportar os dados da tabela de clientes do “AdventureWorks2014 ” para Oracle e MySQL com base na condição definida na divisão de condição. Os dados serão divididos na base do “StateProvinceName ” coluna de “Clientes " tabela. Registros que têm o valor denominado “Califórnia ” em “StateProvinceName ” será exportada para o banco de dados Oracle e os registros que possuem o valor denominado “Washington ” será exportado para o banco de dados MySQL.

Instalei o Oracle 11g express edition e o MySQL 8.0 na minha máquina local. Eu criei banco de dados XE no Oracle e “WideWorldImporters ” banco de dados no servidor MySQL. Eu criei o "Cliente ” em ambos os bancos de dados. Abaixo está o código SQL para criar uma tabela.


CREATE TABLE customers 
  ( 
     cust_id                INT, 
     cust_customername      VARCHAR(500), 
     cust_contactnumber     VARCHAR(50), 
     cust_contactnumbertype VARCHAR(10), 
     cust_email             VARCHAR(150), 
     cust_addresstype       VARCHAR(10), 
     cust_address           VARCHAR(1500), 
     cust_city              VARCHAR(50), 
     cust_state             VARCHAR(50), 
     cust_postalcode        INT, 
     cust_countryname       VARCHAR(100) 
  )



Ao usar o componente de fluxo de dados das ferramentas de dados do SQL Server, podemos transferir dados entre vários bancos de dados configurando drivers ODBC. As ferramentas de dados do SQL Server que podemos instalar pelo gerenciador de conexões já suportam o Oracle Client, mas para o MySQL, precisamos criar uma fonte de dados ODBC.

As ferramentas de dados do SQL Server são um aplicativo de 32 bits e são executados no modo de 32 bits. Portanto, temos que baixar o driver ODBC de 32 bits do MySQL. Veja a imagem abaixo para referência:







Precisamos instalar o “Connector/ODBC 8.0.11 ” para conectar o banco de dados MySQL usando o driver ODBC. O driver ODBC 8.0.11 está disponível para plataforma de SO de 64 bits. Portanto, temos que usar uma versão mais antiga dos drivers ODBC. Veja abaixo imagem:







Em vez de usar drivers de conectividade fornecidos pelo MySQL, usei o driver ODBC para MySQL desenvolvido por Devart.

O Devart ODBC Driver for MySQL é um driver de conectividade poderoso e de alto desempenho. É independente de plataforma, fácil de configurar e suporta ferramentas de terceiros para conexão de banco de dados MySQL. Abaixo estão as características.
  1. Suporta conexão segura SSL e SSH.
  2. Сcompatível com todas as versões do MySQL. Ele suporta MariaDB, banco de dados do Azure para MySQL e Amazon Aurora.
  3. Compatível com muitas ferramentas de análise de terceiros.
  4. Independente de plataforma. Ele suporta plataformas de SO de 32 e 64 bits e muito mais.

Você pode baixar a versão de avaliação de 30 dias do ODBC Driver for MySQL aqui . Veja a imagem a seguir para referência:







Depois que os drivers forem baixados, instale-os executando setup.

Uma vez que os drivers instalados, temos que configurar a fonte de dados ODBC para conectar o banco de dados MySQL. Para fazer isso, abra fontes de dados ODBC (32 bits). Ele está localizado em Painel de Controle>> Ferramentas Administrativas>> Fontes de Dados ODBC. Veja a imagem abaixo para referência:







Abrir fontes de dados ODBC (32 bits). A caixa de diálogo “Administrador de fonte de dados ODBC (32 bits) " vai abrir. Nessa caixa de diálogo, clique em “Adicionar ”. Outra caixa de diálogo “Criar nova fonte de dados ” que possui todos os drivers ODBC instalados no computador será aberto. Nessa lista, selecione “Devart ODBC Driver for MySQL ” e clique em “Concluir ”. Veja a imagem a seguir para referência:







Depois de clicar em “Concluir ”, uma caixa de diálogo para configurar os parâmetros de conectividade do MySQL será aberta. Nessa caixa de diálogo, você pode definir os parâmetros de conectividade. Forneça o nome e a descrição para reconhecer a fonte de dados nos campos apropriados. Em “Servidor ” fornece o nome do hostname ou endereço IP do computador/servidor onde o MySQL está instalado. Forneça o nome de usuário e a senha apropriados para fazer login no servidor e selecionar o banco de dados. Veja a imagem a seguir para referência:







Eu instalei o MySQL na minha máquina local, portanto, forneci "localhost" como caixa de texto do servidor. Estou me conectando ao servidor pelo usuário “root”, portanto, o usuário é “root”. Idealmente, não é preferível. Em vez de root, crie outro usuário e use-o para autenticar o banco de dados MySQL. Eu criei “WideWorldImporters ” banco de dados no servidor de banco de dados MySQL, portanto, forneci “WideWorldImporters ” na caixa suspensa do banco de dados.

Da mesma forma, para conectar o banco de dados Oracle usando SSDT, precisamos instalar o software cliente Oracle. As ferramentas de dados do SQL Server funcionam no modo de 32 bits, portanto, a versão de 32 bits dos drivers ODBC para Oracle deve ser instalada. Você pode baixar o Oracle Client aqui.

Como todos sabemos como criar um pacote SSIS, explicarei diretamente como criar a tarefa de fluxo de dados.

Criar tarefa de fluxo de dados


Na tarefa de fluxo de dados, usaremos quatro componentes:
  1. Origem ADO.NET para preencher dados do banco de dados SQL Server.
  2. Divisão condicional para dividir dados em vários conjuntos.
  3. Configurar destino MySQL e destino Oracle
  4. Configure o caminho de dados para armazenar a saída da divisão condicional em bancos de dados relevantes.

Configurar fonte ADO.NET


Arraste e solte “Origem ADO.NET ” da Caixa de Ferramentas do SSIS para “Fluxo de Dados ” e nomeie como “Dados de vendas ” como mostrado na imagem a seguir:







Clique duas vezes em “Dados de vendas ”. A caixa de diálogo “Editor de código-fonte ADO.NET " vai abrir. Como o gerenciador de conexões ainda não foi criado, portanto, “gerenciador de conexões ADO.NET ” a caixa suspensa está vazia. Para criar uma nova conexão nessa caixa de diálogo, clique em “Novo ”. Outra caixa de diálogo “Configurar gerenciador de conexões ” será aberto conforme mostrado na imagem abaixo:







Em “Configurar gerenciador de conexões ADO.NET ” caixa de diálogo, clique em “Novo ” para abrir o “Gerenciador de conexões " caixa de diálogo.

Em “Nome do servidor ” caixa de texto, digite o nome ou endereço IP do servidor onde o SQL Server foi instalado. O SQL Server está instalado em minha máquina local, portanto, forneci “localhost\SQL2016 ” como caixa de texto do nome do servidor. Na caixa suspensa Autenticação, selecione o tipo de autenticação usado para se conectar à Instância SQL. Estou autenticando no SQL Server usando a autenticação do Windows, portanto, selecionei a autenticação do Windows na caixa suspensa. E, finalmente, na caixa suspensa do banco de dados, selecione o nome do banco de dados onde a tabela está armazenada. Estou exportando dados do “AdventureWorks2014 ” banco de dados, portanto, eu o selecionei em “Nome do banco de dados ” caixa suspensa. Observe a seguinte imagem:







Quando a configuração estiver concluída, clique em “Testar conexão ” para verificar a conectividade com o banco de dados e clique em “OK”.

Configuramos o gerenciador de conexões ADO.NET, portanto, o gerenciador de conexões padrão será selecionado automaticamente em “Gerenciador de conexões ADO.NET " suspenso. Para recuperar dados de uma tabela, selecione “Tabela ou Visualização ” na caixa suspensa do modo de acesso a dados. Depois de selecionar a opção “Tabela ou Visualização” na caixa suspensa, ele traz uma lista de todas as tabelas criadas no banco de dados. Nessa lista, selecione “Clientes ” conforme mostrado na imagem a seguir:






Configurar divisão condicional


Agora vamos usar a transformação de divisão condicional para exportar dados em diferentes planilhas do Excel com base na condição. Arraste o componente de divisão condicional da caixa de ferramentas SSIS para a janela Data Flow e renomeie-o para “Filtro de dados ” como mostrado na imagem abaixo:







Mencionei anteriormente, a saída de dados da tabela "Clientes" será exportada em vários bancos de dados Oracle e MySQL com base na condição definida em "Divisão Condicional ” componente.

Em primeiro lugar, conecte a origem ADO.Net à transformação de divisão condicional. Para fazer isso, clique na seta azul no caminho do fluxo de dados abaixo de “Customers SQL DB ” e arraste-o para a transformação de divisão condicional conforme mostrado na imagem abaixo:







Para configurar a divisão condicional, clique duas vezes em “Editor de Transformação Divisão Condicional”. Uma caixa de diálogo “Editor de transformação de divisão condicional ” será aberto conforme mostrado na imagem a seguir:







Para aplicar uma condição em “StateProvinceName ” coluna, primeiro expanda o nó da coluna, arraste o “StateProvinceName ” (Seção 1) e solte-a na grade (Seção 3). A condição de filtragem de dados está na coluna “StateProvinceName”. Registros com valor “Califórnia ” será exportado para o banco de dados Oracle e registros que tenham o valor “Washington ” será exportado para o banco de dados MySQL. Com base na condição, usaremos igual a (==) operador. A equação é a seguinte:
[Cust_State]=="California"

[Cust_State]=="Washington"

Observe a seguinte imagem:







Uma vez definidas as condições, clique em “OK” para salvar e fechar a caixa de diálogo.

Configurar destino do MySQL


Para exportar dados do SQL Server para MySQL e Oracle, precisamos configurar dois destinos. Primeiro, configure o destino MySQL. Para fazer isso, arraste e solte o destino ODBC da caixa de ferramentas do SSIS e renomeie-o para “MySQL Database” conforme mostrado na imagem abaixo:







Clique duas vezes no destino do banco de dados MySQL (conexão ODBC). Uma caixa de diálogo “Destino ODBC” será aberta. Nessa caixa de diálogo, clique em “Novo”. Outra caixa de diálogo “Configure ODBC Connection Manager” será aberta, conforme mostrado na imagem a seguir:







Outra caixa de diálogo “Gerenciador de conexões " vai abrir. Na caixa de diálogo, lista de DSNs criados na máquina que está preenchido em “Usar nome de fonte de dados de usuário ou sistema ” caixa suspensa. Como já configuramos o ODBC DSN, selecione a opção “MySQL Destination ” na lista suspensa, conforme mostrado na imagem abaixo:







Clique em “Testar conexão ” para verificar se a conexão foi estabelecida com sucesso e clique em “OK”.

Agora em “Destino ODBC ” caixa de diálogo, selecione o nome da tabela em “Nome da tabela ou visualização ” como mostrado na imagem a seguir:







Depois que o destino do banco de dados MySQL for configurado com sucesso, configure o destino do banco de dados Oracle.

Configurar Destino Oracle


Para configurar o destino Oracle, arraste e solte “ADO.NET Destination” na janela de fluxo de dados e renomeie-o como “Oracle Database” conforme mostrado na imagem a seguir:







Clique duas vezes em Oracle Database (destino ADO.NET). Uma caixa de diálogo “Editor de destino ADO.NET " vai abrir. Na caixa de diálogo, clique em “Novo ”. Outra caixa de diálogo “Configure ADO.NET Connection Manager” será aberto como mostrado na imagem a seguir:







Em “Configurar o Gerenciador de Conexão ADO.NET ” caixa de diálogo, clique em “Novo ”. Outra caixa de diálogo "Gerenciador de conexões" será aberta. Para configurar a conectividade do banco de dados Oracle, temos que selecionar “Net.Provider\OracleClient ” em “Provedor " caixa de diálogo. Forneça o nome do host ou o endereço IP do servidor de banco de dados Oracle na caixa de texto "Nome do servidor". Forneça o nome de usuário e a senha para conectar a instância do banco de dados Oracle. Como mencionei, instalei a instância do Oracle como minha máquina local, portanto, forneci “localhost” na caixa de texto do nome do servidor. Eu conectei o banco de dados oracle usando o usuário "Vendas", portanto, na caixa de texto "Nome de usuário", digitei "Vendas" como nome de usuário e digitei a senha do mesmo. Observe a seguinte imagem:







Para verificar se a conexão foi estabelecida, clique em “Testar conexão ” e assim que a conexão for estabelecida clique em “OK ” para fechar a caixa de diálogo.

Agora em “editor de destino ADO.NET ” caixa de diálogo, selecione a tabela ou o nome da visualização onde os dados devem ser salvos. Estou exportando dados para a tabela de clientes, por isso selecionei “Vendas.Cliente ” conforme mostrado na imagem a seguir:






Configurar caminho de dados


Depois que ambos os destinos estiverem configurados, configure o caminho de dados para transferir dados nos respectivos bancos de dados. Para fazer isso, arraste a seta azul do caminho de dados abaixo da transformação de divisão condicional e solte-a no Destino ODBC (Destino MySQL). Quando o caminho de dados se conecta ao destino ODBC, uma caixa de diálogo é exibida. Selecione o destino em “Saída ” para direcionar os dados que são recuperados da Consulta SQL. A caixa de diálogo se parece com a imagem abaixo:







A lista suspensa é preenchida com todas as condições definidas na transformação de divisão condicional. Nesse caso, um menu suspenso inclui três opções.
  1. Saída MySQL
  2. Saída do Oracle
  3. Saída padrão

Conforme mencionado acima, os registros que têm o valor “Washington ” da coluna “StateProvinceName” será exportado para o banco de dados MySQL, portanto, selecione MySQL Output.

Agora mapeie as colunas de saída da transformação condicional com a tabela de clientes do banco de dados MySQL. Para fazer isso, clique duas vezes em “Banco de dados MySQL ” (destino ODBC) e na caixa de diálogo “Destino ODBC”, selecione “Mapeamento ” que está localizada no painel esquerdo da caixa de diálogo, conforme mostrado na imagem abaixo:







Na imagem acima, “Colunas de entrada” são o nome da coluna da tabela do SQL Server e a coluna de destino será o nome da coluna da tabela “Clientes” da planilha MySQL. Nesta demonstração, o nome da coluna da Tabela SQL e das tabelas MySQL são os mesmos, de modo que suas colunas de entrada e saída são mapeadas automaticamente.

Repita o processo de configuração do fluxo de dados para o caminho de dados “Oracle Output” da mesma maneira. Abaixo estão as mudanças.
  1. Precisamos selecionar “Oracle Output” na caixa de diálogo de seleção de entrada-saída, conforme mostrado na imagem abaixo:
  2. Em "Editor de destino ADO.NET", verifique se os mapeamentos de coluna de entrada-saída estão corretos, conforme mostrado na imagem abaixo:





Depois que todas as configurações forem concluídas, toda a tarefa de fluxo de dados se parecerá com a imagem abaixo:






Teste do pacote SSIS


Agora execute o pacote clicando no botão “Iniciar” na barra de menu. Se o pacote concluir sua execução com sucesso, ele deverá se parecer com a imagem abaixo:







O pacote dividiu a saída de dados SQL usando divisão condicional e exportou 4.445 registros no banco de dados MySQL e 2.285 registros no banco de dados Oracle.

Resumo


Neste artigo, configuramos a conexão ODBC para MySQL, criamos um pacote SSIS com um fluxo de dados. Usamos a Transformação de divisão condicional para dividir a saída, recuperada do banco de dados do servidor SQL e exportá-la em bancos de dados Oracle e MySQL.

Ferramentas úteis:


Componentes de fluxo de dados Devart SSIS – permitem que você integre dados de banco de dados e nuvem por meio do SQL Server Integration Services.

Drivers ODBC Devart – fornecem soluções de conectividade de alto desempenho e ricas em recursos para aplicativos baseados em ODBC.