Oracle
 sql >> Database >  >> RDS >> Oracle

Esportazione di Oracle Table in un foglio di lavoro Excel

In questo articolo spiegherò come dividere ed esportare i dati di una tabella di database Oracle in più fogli di lavoro di un file Excel con l'aiuto del pacchetto del servizio di integrazione di SQL Server.

Spesso i DBA chiedevano di generare report ad hoc da un database. Recentemente mi è stato chiesto di generare un report dal database. Vogliono che fornisca un rapporto in più fogli di lavoro di un file Excel. Esistono diversi modi per farlo, ma la query richiedeva molte risorse. Quindi voglio estrarre i dati dal database con un'esecuzione e ho deciso di utilizzare il pacchetto dei servizi di integrazione di SQL Server. Gli strumenti dati di SQL Server hanno un componente chiamato Trasformazione suddivisa condizionale che può essere utilizzato per portare a termine l'attività.

Utilizzando gli strumenti di dati di SQL Server, possiamo recuperare i dati da varie piattaforme di database utilizzando la connessione ODBC. La maggior parte delle piattaforme di database fornisce i propri driver di connettività che possono essere utilizzati per configurare una connessione tra l'applicazione e il database.

Che cos'è la trasformazione divisa condizionale

La trasformazione Divisione condizionale può instradare righe di dati a output diversi a seconda del contenuto dei dati. L'implementazione della trasformazione Conditional Split è come una struttura decisionale CASE in un linguaggio di programmazione. Valuta le espressioni e, in base ai risultati, indirizza la riga di dati all'output specificato. Questa trasformazione fornisce anche un output predefinito, in modo che se una riga non corrisponde a nessuna espressione, viene indirizzata all'output predefinito. (Riferimento MSDN :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017) .

Impostazione demo

Ho installato Oracle 11g Express Edition sulla mia macchina. Ho creato una tabella chiamata EMPLOYEESDATA nelle Risorse umane schema di XE database e aggiunto alcuni record fittizi da AdventureWorks2014 banca dati.

Il codice seguente creerà una tabella:

 CREATE TABLE "HR"."EMPLOYEE_DATA" ( "BusinessEntityID" NUMBER(*,0), "Title" NVARCHAR2(8), "FirstName" NVARCHAR2(50), "MiddleName" NVARCHAR2(50), "LastName" NVARCHAR2(50), "Suffix" NVARCHAR2(10), "JobTitle" NVARCHAR2(50), "PhoneNumber" NVARCHAR2(25), "PhoneNumberType" NVARCHAR2(50), "EmailAddress" NVARCHAR2(50), "EmailPromotion" NUMBER( *,0), "AddressLine1" NVARCHAR2(60), "AddressLine2" NVARCHAR2(60), "City" NVARCHAR2(30), "StateProvinceName" NVARCHAR2(50), "PostalCode" NVARCHAR2(15), "CountryRegionName" NVARCHAR2( 50)) Creazione di segmento PCTFREE IMMEDIATA 10 PCTUSED 40 initRans 1 maxtrans 255 nocompress di registrazione (iniziale 65536 1048576 minextents 1 maxextents 2147483645 pctIncrease 0 freelist 1 freelist gruppi 1 buffer_pool flash_cache default cell_flash_cache default) tablepace " 

Per connettere il database Oracle utilizzando SSDT, è necessario 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.

Ho creato un file Excel chiamato "HRData.xls ' che ha due fogli di lavoro chiamati Australia e Canada . I dati verranno divisi in base al valore di CountryRegionName colonna. Se il valore della colonna di CountryRegionName la colonna è Canada quindi verrà archiviato in Canada foglio di lavoro e se il valore della colonna di CountryRegionName è Australia quindi verrà archiviato in Australia foglio di lavoro.

Poiché sappiamo tutti come creare un pacchetto SSIS, spiegherò direttamente come creare un'attività di flusso di dati.

Crea attività flusso di dati

Nell'attività Flusso di dati utilizzeremo i tre componenti seguenti:

  1. Sorgente ADO.NET per popolare i dati dal database Oracle.
  2. Dividi condizionale per dividere i dati in più set.
  3. Excel destinazione con due cartelle di lavoro chiamate "Australia" e "Canada".

Configura sorgente ADO.NET

Trascina e rilascia Sorgente ADO.NET da Casella degli strumenti SSIS al Flusso di dati windows e denominarlo Dati del dipendente come mostrato nell'immagine seguente:

Fare doppio clic su Dati sui dipendenti . L'editor sorgente ADO.NET si aprirà la finestra di dialogo. Qui non abbiamo ancora creato alcuna connessione, da qui il Gestione connessioni ADO.NET la casella a discesa è vuota. Creeremo una nuova connessione. Per farlo, fai clic su Nuovo in quella finestra di dialogo. Dopodiché, un'altra finestra di dialogo,Configura Connection Manager si aprirà come mostrato nell'immagine qui sotto:

In Configura ADO.NET Connection Manager finestra di dialogo, fai clic su Nuovo . Un'altra finestra di dialogo, Gestione connessioni , si aprirà.

Per impostazione predefinita, provider .Net\provider di dati SQLClient sarà selezionato nel Fornitore casella a discesa. Poiché stiamo compilando i dati dal database Oracle, selezioneremo OracleClient Data Provider .

In Nome server casella di testo, immettere il nome o l'indirizzo IP del server su cui è installato Oracle 11g. Nome utente e password verranno utilizzati per connettere il database Oracle. Avevo installato Oracle sulla mia macchina virtuale locale, quindi il nome del server sarà localhost . Connetterò il database utilizzando HR l'utente quindi il nome utente sarà HR . Fornisci la password appropriata e fai clic su OK . Vedi l'immagine seguente:

Una volta completata la configurazione, fai clic su Verifica 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 casella di riepilogo a discesa. Recupereremo i dati dalla tabella, quindi seleziona Tabella o Visualizza nella casella a discesa della modalità di accesso ai dati. Ho già creato EMPLOYEESDATA tabella nelle Risorse umane Schema del database Oracle, quindi seleziona HR.EmployeesData nelNome della tabella o della vista casella a discesa come mostrato nell'immagine qui sotto:

Configura divisione condizionale

Ora, per esportare i dati in diversi fogli di lavoro di Excel in base a una condizione, utilizzeremo la trasformazione della divisione condizionale. Trascina il componente di divisione condizionale dal SSIS casella degli strumenti al Flusso di dati finestra come mostrato nell'immagine qui sotto.

Ho menzionato in precedenza l'output dei dati di HR.EmployeeData la tabella verrà esportata in più fogli di lavoro in base alla condizione definita nella Divisione condizionale componente.

Innanzitutto, collegheremo la sorgente ADO.Net alla trasformazione della divisione condizionale. Per farlo, fai clic sulla freccia blu sul percorso del flusso di dati nella parte inferiore dei Dati sui dipendenti componente e trascinalo sulla trasformazione della divisione condizionale come mostrato nell'immagine sottostante.

Ora configureremo la trasformazione della divisione condizionale. Come accennato in precedenza, divideremo i dati della tabella HR.EmployeesData in base al valore di CountryRegionName colonna e memorizzarli in diversi fogli di lavoro.

A tale scopo, fai doppio clic su Editor trasformazione divisa condizionale . L'editor della trasformazione divisa condizionale si aprirà la finestra di dialogo come mostrato nell'immagine seguente:

Come puoi vedere nell'immagine sopra, l'editor di trasformazione della divisione condizionale ha tre sezioni che determinano come i dati verranno instradati ai componenti successivi.

Sezione A :in questa sezione, sotto le Colonne verrà elencato l'elenco delle cartelle delle colonne di output, derivato dal componente sorgente ADO.Net che può essere utilizzato per definire le condizioni per dividere i dati.

Sezione B :In questa sezione verranno elencate varie funzioni che possono essere utilizzate per convertire l'output in diversi formati e utilizzate per definire le condizioni per dividere i dati.

Sezione C :in questa sezione è possibile creare una condizione in grado di dividere l'output della sorgente ADO.Net in più set di risultati.

Aggiungeremo la condizione nella Sezione-C. Quindi prima espandi il nodo della colonna e trascina CountryRegionName colonna (Sezione A) e rilasciarlo nella griglia (Sezione C) come mostrato nell'immagine seguente:

Per questo esempio, definiremo la nostra condizione in base a CountryRegionName colonna. L'elenco dei dipendenti del "Canada" verrà archiviato nel foglio di lavoro di Excel denominato Canada e un elenco di dipendenti dall'Australia verrà archiviato in Australia foglio di lavoro. In base alla condizione, utilizzeremo uguale a (==) operatore. L'equazione sarà la seguente:

[CountryRegionName]=="Australia"[CountryRegionName]=="Canada"

Una volta definite le condizioni, fai clic su OK per salvare e chiudere la finestra di dialogo.

Configurazione della destinazione Excel

Ora che abbiamo suddiviso il flusso di dati in più percorsi, aggiungeremo una destinazione per ogni percorso. Poiché esporteremo i dati della tabella in diversi fogli di lavoro Excel, dobbiamo creare due destinazioni Excel. Per farlo, trascina e rilascia la connessione Excel da SSIS Toolbox come mostrato nell'immagine qui sotto:

Per configurare la destinazione Excel, fare doppio clic su Destinazione Excel. Il Gestione connessioni Excel si aprirà la finestra di dialogo. In quella finestra di dialogo, fai clic su Nuovo come mostrato nell'immagine seguente:

Un'altra finestra di dialogo chiamata Excel Connection Manager aprirà. In questa finestra di dialogo, forniremo un percorso in cui si trova il file Excel. Ho creato i Dati sui dipendenti file sul mio desktop. Attraverseremo il file system, selezioneremo il file e faremo clic su OK come mostrato nell'immagine qui sotto:

Ora, nella Modalità di accesso ai dati casella a discesa, seleziona Tabella o Visualizza e nel Nome del foglio Excel casella a discesa, seleziona Australia$, come mostrato nell'immagine qui sotto:

Ora configurerò il percorso dei dati. Per farlo, trascina la freccia blu del percorso dei dati dalla trasformazione della divisione condizionale a Dipendenti australiani componente di destinazione excel. Quando colleghi il percorso dei dati alla destinazione di Excel, apparirà una finestra di dialogo per scegliere l'output che vogliamo indirizzare verso la destinazione selezionata. La finestra di dialogo apparirà come segue:

La finestra di dialogo include tutti gli output nell'elenco a discesa, disponibile dalla trasformazione della divisione condizionale. In questo caso, l'elenco a discesa includerà due opzioni.

  1. Australia
  2. Canada
  3. Uscita predefinita

Fare doppio clic sul componente di destinazione di Excel per mappare le colonne della tabella con le colonne di Excel. A tale scopo, fai doppio clic sul componente di destinazione di Excel e nell'Editor di destinazione di Excel finestra di dialogo, seleziona la Mappatura opzione situata nel riquadro sinistro della finestra di dialogo, come mostrato nell'immagine seguente:

Nell'immagine sopra, Colonna di input è il nome della colonna della tabella Oracle e della Colonna di destinazione sarà il nome della colonna del foglio Excel. In questa demo, il nome della colonna della tabella e del file Excel sono gli stessi. Quindi Editor di destinazione di Excel mapperà automaticamente le colonne di input e output.

Allo stesso modo, ripeterò il processo di configurazione del flusso di dati per il Canada percorso dati.

  1. Dobbiamo selezionare Canada nella Selezione Input Output finestra di dialogo, come mostrato nell'immagine seguente.
  2. In Excel Destinazione Editor r, seleziona Canada$ nel Nome del foglio Excel casella a discesa come mostrato nell'immagine qui sotto.

Una volta completate tutte le configurazioni, l'intera attività del flusso di dati sarà simile alla seguente:

Test del pacchetto SSIS

Ora eseguiamo il pacchetto e vediamo come ha funzionato. Per farlo, fai clic su Avvia pulsante sulla barra dei menu. Se il pacchetto completa l'esecuzione correttamente, dovrebbe apparire come segue:

Come indica l'immagine sopra, il pacchetto ha inserito 1 record nella regione dell'Australia foglio di lavoro e 2 record nella regione canadese foglio di lavoro.

Riepilogo

In questo articolo abbiamo creato un pacchetto SSIS con un unico flusso di dati. Abbiamo aggiunto una trasformazione Divisione condizionale al flusso di dati per suddividere i dati in più percorsi. Abbiamo quindi indirizzato ciascuno di questi percorsi di dati a diversi fogli di lavoro Excel.

Riferimenti :

Esporta i dati SQL in più cartelle di lavoro di un file excel.

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.