In questo articolo, ho spiegato come possiamo dividere ed esportare i dati della tabella del database di SQL Server nei database Oracle e MySQL. Tale processo si basa sulla condizione definita in SSIS come "trasformazione scissione condizionale ”. La trasformazione della divisione condizionale è come l'istruzione case di qualsiasi linguaggio di programmazione. Usando condizionale, possiamo reindirizzare l'output di un componente in più destinazioni che si basa su una condizione definita nel componente diviso condizionale.
Impostazione demo
Possiamo recuperare i dati da varie piattaforme di database utilizzando la connessione ODBC durante l'utilizzo degli strumenti di dati di SQL Server. La maggior parte delle piattaforme di database fornisce i propri driver di connettività che possono essere utilizzati per configurare la connessione tra l'applicazione e il database.
Ho intenzione di esportare i dati della tabella dei clienti di "AdventureWorks2014 ” database su Oracle e MySQL in base alla condizione definita in condition split. I dati saranno divisi sulla base di "StateProvinceName ” colonna di “Clienti " tavolo. Record che hanno il valore denominato "California ” in “NomeProvinciaStato " verrà esportata nel database Oracle e nei record che hanno il valore denominato "Washington ” verrà esportato nel database MySQL.
Ho installato Oracle 11g express edition e MySQL 8.0 sul mio computer locale. Ho creato un database XE in Oracle e "WideWorldImportors ” database sul server MySQL. Ho creato il "Cliente ” su entrambi i database. Di seguito è riportato il codice SQL per creare una tabella.
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) )
Durante l'utilizzo del componente del flusso di dati degli strumenti dati di SQL Server, possiamo trasferire i dati tra vari database configurando i driver ODBC. Gli strumenti dati di SQL Server che possiamo installare tramite il gestore della connessione supportano già Oracle Client, ma per MySQL è necessario creare un'origine dati ODBC.
Gli strumenti dati di SQL Server sono un'applicazione a 32 bit e viene eseguita in modalità a 32 bit. Pertanto, dobbiamo scaricare il driver ODBC a 32 bit di MySQL. Vedi sotto l'immagine per riferimento:
Dobbiamo installare "Connettore/ODBC 8.0.11 ” per connettere il database MySQL utilizzando il driver ODBC. Il driver ODBC 8.0.11 è disponibile per la piattaforma del sistema operativo a 64 bit. Pertanto, dobbiamo utilizzare una versione precedente dei driver ODBC. Vedi immagine sotto:
Invece di utilizzare i driver di connettività forniti da MySQL, ho utilizzato driver ODBC per MySQL sviluppato da Devart.
Devart ODBC Driver per MySQL è un driver di connettività potente e ad alte prestazioni. È indipendente dalla piattaforma, facile da configurare e supporta strumenti di terze parti per la connessione al database MySQL. Di seguito sono riportate le caratteristiche.
- Supporta la connessione sicura SSL e SSH.
- Compatibile con ogni versione di MySQL. Supporta MariaDB, database di Azure per MySQL e Amazon Aurora.
- Compatibile con molti strumenti di analisi di terze parti.
- Indipendente dalla piattaforma. Supporta piattaforme OS sia a 32 bit che a 64 bit e molte altre.
Puoi scaricare la versione di prova di 30 giorni di Driver ODBC per MySQL qui . Vedere l'immagine seguente per riferimento:
Una volta scaricati i driver, installarli eseguendo il programma di installazione.
Una volta installati i driver, dobbiamo configurare l'origine dati ODBC per connettere il database MySQL. Per farlo, apri le origini dati ODBC (32 bit). Si trova in Pannello di controllo>> Strumenti di amministrazione>> Origini dati ODBC. Vedi sotto l'immagine per riferimento:
Apri origini dati ODBC (32 bit). La finestra di dialogo "Amministratore origine dati ODBC (32 bit) " aprirà. In quella finestra di dialogo, fai clic su "Aggiungi ”. Un'altra finestra di dialogo "Crea nuova origine dati ” che ha tutti i driver ODBC installati nel computer si aprirà. Da tale elenco, seleziona "Devart ODBC Driver for MySQL ” e fare clic su “Fine ”. Vedere l'immagine seguente per riferimento:
Dopo aver fatto clic su "Fine ”, si aprirà una finestra di dialogo per configurare i parametri di connettività MySQL. In quella finestra di dialogo è possibile definire i parametri di connettività. Fornire il nome e la descrizione per riconoscere l'origine dati nei campi appropriati. In "Server ” casella di testo fornisce il nome dell'hostname o l'indirizzo IP del computer/server in cui è installato MySQL. Fornire nome utente e password appropriati per accedere al server e selezionare il database. Vedere l'immagine seguente per riferimento:
Ho installato MySQL sulla mia macchina locale, quindi ho fornito "localhost" come casella di testo Server. Mi sto connettendo al server tramite l'utente "root", quindi l'utente è "root". Idealmente, non è preferibile. Invece di root, crea un altro utente e usalo per autenticare il database MySQL. Ho creato "WideWorldImportors " database sul server di database MySQL, quindi ho fornito "WideWorldImportors ” nella casella a discesa del database.
Allo stesso modo, per connettere il database Oracle utilizzando SSDT, dobbiamo installare il software client Oracle. Gli strumenti dati di SQL Server funzionano in modalità a 32 bit, quindi è necessario installare la versione a 32 bit dei driver ODBC per Oracle. Puoi scaricare Oracle Client da qui.
Poiché sappiamo tutti come creare un pacchetto SSIS, spiegherò direttamente come creare l'attività del flusso di dati.
Crea attività flusso di dati
Nell'attività Flusso di dati utilizzeremo quattro componenti:
- Sorgente ADO.NET per popolare i dati dal database di SQL Server.
- Dividi condizionale per dividere i dati in più set.
- Configura la destinazione MySQL e la destinazione Oracle
- Configura il percorso dei dati per archiviare l'output della divisione condizionale nei database pertinenti.
Configura sorgente ADO.NET
Trascina e rilascia "Sorgente ADO.NET " da SSIS Toolbox a "Flusso di dati ” e denominarlo “Dati di vendita ” come mostrato nell'immagine seguente:
Fare doppio clic su "Dati di vendita ”. La finestra di dialogo "Editor sorgente ADO.NET " aprirà. Poiché il gestore connessione non è ancora stato creato, quindi "Gestione connessione ADO.NET "La casella a discesa è vuota. Per creare una nuova connessione in quella finestra di dialogo, fai clic su "Nuovo ”. Un'altra finestra di dialogo "Configura gestione connessione ” si aprirà come mostrato nell'immagine sottostante:
In "Configura gestione connessione ADO.NET ” finestra di dialogo, fare clic su “Nuovo ” per aprire “Gestione connessioni finestra di dialogo.
In "Nome server ” nella casella di testo, immettere il nome o l'indirizzo IP del server in cui è stato installato SQL Server. SQL Server è installato sul mio computer locale, quindi ho fornito "localhost\SQL2016 ” come casella di testo del nome del server. Nella casella a discesa Autenticazione, seleziona il tipo di autenticazione utilizzato per la connessione all'istanza SQL. Mi sto autenticando sul server SQL utilizzando l'autenticazione di Windows, quindi ho selezionato l'autenticazione di Windows nella casella a discesa. Infine, nella casella a discesa del database, seleziona il nome del database in cui è archiviata la tabella. Sto esportando i dati da "AdventureWorks2014 ” database, quindi l'ho selezionato in “Nome database " casella a discesa. Guarda la seguente immagine:
Una volta completata la configurazione, fare clic su "Test connessione ” per verificare la connettività con il database e fare clic su “OK”.
Abbiamo configurato il gestore connessione ADO.NET, quindi il gestore connessione predefinito verrà selezionato automaticamente in "Gestione connessione ADO.NET " cadere in picchiata. Per recuperare i dati da una tabella, seleziona "Tabella o Visualizza ” nella casella a discesa della modalità di accesso ai dati. Dopo aver selezionato l'opzione "Tabella o Visualizza" nella casella a discesa, viene visualizzato un elenco di tutte le tabelle create nel database. Da tale elenco, seleziona "Clienti ” come mostrato nell'immagine seguente:
Configura divisione condizionale
Ora utilizzeremo la trasformazione della divisione condizionale per esportare i dati in diversi fogli di lavoro di Excel in base alla condizione. Trascina il componente di divisione condizionale dalla casella degli strumenti SSIS alla finestra Flusso di dati e rinominalo in "Filtro dati ” come mostrato nell'immagine sottostante:
Ho accennato in precedenza, l'output dei dati della tabella "Clienti" verrà esportato in più database Oracle e MySQL in base alla condizione definita in "Divisione condizionale ” componente.
Innanzitutto, connetti la sorgente ADO.Net alla trasformazione della divisione condizionale. Per farlo, fai clic sulla freccia blu nel percorso del flusso di dati sotto "Database SQL clienti ” e trascinalo sulla trasformazione della divisione condizionale come mostrato nell'immagine seguente:
Per configurare la divisione condizionale, fare doppio clic su "Editor trasformazione divisione condizionale". Una finestra di dialogo "Editor trasformazione divisa condizionale ” si aprirà come mostrato nell'immagine seguente:
Per applicare una condizione a "StateProvinceName ” colonna, per prima cosa espandi il nodo della colonna, trascina “StateProvinceName ” (Sezione 1) e rilasciarlo nella griglia (Sezione 3). La condizione di filtraggio dei dati è nella colonna "StateProvinceName". Record che hanno un valore "California ” verrà esportato nel database Oracle e nei record che hanno un valore “Washington ” verrà esportato nel database MySQL. In base alla condizione, utilizzeremo uguale a (==) operatore. L'equazione è la seguente:
[Cust_State]=="California" [Cust_State]=="Washington"
Guarda la seguente immagine:
Una volta definite le condizioni, fare clic su "OK" per salvare e chiudere la finestra di dialogo.
Configura la destinazione MySQL
Per esportare i dati da SQL Server a MySQL e Oracle, quindi, è necessario configurare due destinazioni. Innanzitutto, configura la destinazione MySQL. Per fare ciò, trascina e rilascia la destinazione ODBC dalla casella degli strumenti SSIS e rinominala in "Database MySQL" come mostrato nell'immagine seguente:
Fare doppio clic sulla destinazione del database MySQL (connessione ODBC). Si aprirà una finestra di dialogo "Destinazione ODBC". In quella finestra di dialogo fare clic su "Nuovo". Si aprirà un'altra finestra di dialogo "Configura ODBC Connection Manager", come mostrato nell'immagine seguente:
Un'altra finestra di dialogo “Gestione connessioni " aprirà. Nella finestra di dialogo, l'elenco dei DSN creati sulla macchina è compilato in "Usa il nome dell'origine dati dell'utente o del sistema " casella a discesa. Poiché abbiamo già configurato ODBC DSN, seleziona "Destinazione MySQL ” dall'elenco a discesa come mostrato nell'immagine seguente:
Fai clic su "Verifica connessione ” per verificare che la connessione sia stata stabilita correttamente e fare clic su “OK”.
Ora in "Destinazione ODBC ”, seleziona il nome della tabella da “Nome della tabella o della vista ” come mostrato nell'immagine seguente:
Dopo aver configurato correttamente la destinazione del database MySQL, configurare la destinazione del database Oracle.
Configura la destinazione Oracle
Per configurare la destinazione Oracle, trascina e rilascia "Destinazione ADO.NET" nella finestra del flusso di dati e rinominalo come "Database Oracle" come mostrato nell'immagine seguente:
Fare doppio clic su Oracle Database (destinazione ADO.NET). Una finestra di dialogo "Editor di destinazione ADO.NET " aprirà. Nella finestra di dialogo, fai clic su "Nuovo ”. Un'altra finestra di dialogo "Configura ADO.NET Connection Manager" si aprirà come mostrato nell'immagine seguente:
In "Configura ADO.NET Connection Manager ” finestra di dialogo, fare clic su “Nuovo ”. Si aprirà un'altra finestra di dialogo "Gestione connessioni". Per configurare la connettività del database Oracle, dobbiamo selezionare "Net.Provider\OracleClient ” in “Fornitore " la finestra di dialogo. Fornire il nome host o l'indirizzo IP del server di database Oracle nella casella di testo "Nome server". Fornisci nome utente e password per connettere l'istanza del database Oracle. Come ho già detto, ho installato l'istanza Oracle come macchina locale, quindi ho fornito "localhost" nella casella di testo del nome del server. Ho collegato il database Oracle utilizzando l'utente "Vendite", quindi nella casella di testo "Nome utente" ho inserito "Vendite" come nome utente e ne ho inserito la password. Guarda la seguente immagine:
Per verificare che la connessione sia stata stabilita, fai clic su "Test connessione ” e una volta stabilita la connessione fare clic su “OK ” per chiudere la finestra di dialogo.
Ora su "Editor di destinazione ADO.NET ” finestra di dialogo, selezionare la tabella o visualizzare il nome in cui salvare i dati. Sto esportando i dati nella tabella dei clienti, quindi ho selezionato "Sales.Customer ” come mostrato nell'immagine seguente:
Configura percorso dati
Dopo aver configurato entrambe le destinazioni, configurare il percorso dei dati per trasferire i dati nei rispettivi database. Per fare ciò, trascina la freccia blu del percorso dei dati sotto la trasformazione della divisione condizionale e rilasciala sulla destinazione ODBC (destinazione MySQL). Quando il percorso dei dati si connette alla destinazione ODBC, viene visualizzata una finestra di dialogo. Seleziona la destinazione da "Output ” casella a discesa per indirizzare i dati recuperati da SQL Query. La finestra di dialogo è simile all'immagine qui sotto:
L'elenco a discesa viene riempito con tutte le condizioni definite nella trasformazione della divisione condizionale. In questo caso, un menu a discesa include tre opzioni.
- Uscita MySQL
- Uscita Oracle
- Uscita predefinita
Come accennato in precedenza, i record che hanno il valore "Washington ” della colonna “StateProvinceName” verrà esportata nel database MySQL, quindi selezionare MySQL Output.
Ora mappa le colonne di output della trasformazione condizionale con la tabella dei clienti del database MySQL. Per farlo, fai doppio clic su “Database MySQL ” (destinazione ODBC) e nella finestra di dialogo “Destinazione ODBC”, seleziona “Mappatura ” opzione che si trova nel riquadro sinistro della finestra di dialogo, come mostrato nell'immagine seguente:
Nell'immagine sopra, "Colonne di input" sono il nome della colonna della tabella di SQL Server e la colonna di destinazione sarà il nome della colonna della tabella "Clienti" del foglio MySQL. In questa demo, il nome della colonna della tabella SQL e delle tabelle MySQL è lo stesso, quindi le colonne di input e output vengono mappate automaticamente.
Ripetere il processo di configurazione del flusso di dati per il percorso dati "Oracle Output" allo stesso modo. Di seguito sono riportate le modifiche.
- Dobbiamo selezionare "Oracle Output" nella finestra di dialogo di selezione input-output, come mostrato nell'immagine seguente:
- In "Editor di destinazione ADO.NET", verifica che i mapping delle colonne input-output siano corretti come mostrato nell'immagine seguente:
Una volta completate tutte le configurazioni, l'intera attività del flusso di dati appare come nell'immagine seguente:
Test del pacchetto SSIS
Ora esegui il pacchetto facendo clic sul pulsante "Start" nella barra dei menu. Se il pacchetto completa la sua esecuzione con successo, dovrebbe apparire come l'immagine seguente:
Il pacchetto ha diviso l'output dei dati SQL utilizzando la divisione condizionale ed ha esportato 4.445 record nel database MySQL e 2.285 record nel database Oracle.
Riepilogo
In questo articolo, abbiamo configurato la connessione ODBC per MySQL, creato un pacchetto SSIS con un flusso di dati. Abbiamo utilizzato la Trasformazione divisa condizionale per dividere l'output, recuperato dal database del server SQL ed esportarlo nei database Oracle e MySQL.
Strumenti utili:
Devart SSIS Data Flow Components:consente di integrare database e dati cloud tramite SQL Server Integration Services.
Driver Devart ODBC:forniscono soluzioni di connettività ad alte prestazioni e ricche di funzionalità per applicazioni basate su ODBC.