sql >> Database teknologi >  >> RDS >> Sqlserver

Eksporter data fra SQL Server til Excel og tekstfil via SSIS-pakken

Mens vi bruger SSIS-dataflowet, kan vi udføre ETL-opgaver, der kan bruges til datamigrering, dataaflæsning, design og implementering af datavarehuset.

I denne artikel forklarer jeg, hvordan du eksporterer data fra en SQL-tabel til excel- og tekstfil ved at bruge SSIS-dataflowopgaven.

I denne demo vil jeg udføre følgende trin:

1. Opret en SSIS-pakke og opret ADO.NET-forbindelsesadministrator.

2. Opret dataflowopgave, der har ADO.NET-kilde til at udfylde data fra SQL Server. Data vil blive skrevet til excel-fil og tekstfil og konfigurer derfor flad fil-destination og excel-destination.

3. Udfør SSIS-pakken og bekræft, at data er skrevet til excel- og tekstfiler.

Opret SSIS-pakke og ADO.NET-forbindelse

Til denne demo brugte jeg SQL Server Data-værktøjer 2015. For det første opretter jeg et nyt integrationsserviceprojekt ved navn "Eksporter SQL-data ”:

Efter oprettelsen af ​​et SSIS-projekt vil jeg lave dataflow-opgaven. Dataflowopgaven vil bruge SQL Server som kilde. Excel-filen og den flade fil vil blive bestemt som destinationen. Før oprettelsen af ​​dataflowopgaven skal vi oprette ADO.NET-forbindelsen .

Konfigurer ADO.NET-forbindelse

Som jeg nævnte ovenfor, vil jeg bruge "WideWorldImportors ” demodatabase, der kan downloades herfra.

For at oprette en "Kilde ”-forbindelse, højreklik på “Forbindelsesadministratorer ” og vælg “Ny ADO.NET-forbindelse ” som vist på billedet nedenfor:

En dialogboks "Konfigurer ADO.NET Connection Manager ” vil åbne. Klik på "Ny i dialogboksen ” som vist i følgende billede:

En dialogboks "Connection Manager ” vil åbne. Jeg vil konfigurere SQL-forbindelsesparametrene:

1. Servernavn – er værtsnavnet eller IP-adressen på databaseserveren, hvor SQL er installeret.

2. Godkendelse – er en "godkendelsestype", der bruges til at forbinde Server, der er valgt på "Servernavn ” rullemenu. Det kan enten være SQL-godkendelse eller Windows-godkendelse.

3. Databasenavn – er navnet på den database, som vi skal bruge til dataudtræk.

I denne demo vil jeg bruge min lokale VM. Jeg vil bruge Windows-godkendelse til at forbinde SQL-instansen, og jeg vil bruge "WideWorldImportors ” database.

Se på følgende billede:

Klik på "Test forbindelse ” for at bekræfte den vellykkede forbindelse. Se på følgende billede:

Når SQL-forbindelsen er konfigureret, vil du kunne se forbindelsen i "Forbindelsesadministratorer ” vindue. Den er placeret i bunden af ​​kontrolflowvinduet som vist på følgende billede:

Opret dataflowopgave

Dataflowopgave bruges til at flytte data mellem kilder og destination. Det kan bruges til at udføre ETL (Extract, Transform, and load) opgaver. Jeg vil eksportere data fra SQL Server til Excel eller tekstfil, derfor vil vi bruge dataflowopgaven.

For at konfigurere dataflowopgaven vil jeg først trække og slippe dataflowopgaven i kontrolflowvinduet og omdøbe den til "Eksporter salgsdata til Excel ” som vist på billedet nedenfor:

Konfigurer ADO.NET-kilde

For at udfylde data fra SQL Server-tabellen skal vi konfigurere ADO.Net-kildekomponenten. Dobbeltklik på "Dataflowopgave " at gøre det. Vinduet "Konfigurer dataflowopgave ” vil åbne. Alternativt kan du vælge "Dataflow ”, der er placeret ved siden af ​​“Kontrolflow ”. Da vi allerede har konfigureret SQL-forbindelse, vil vi trække og slippe ADO.NET Source til dataflowvinduet som vist på billedet nedenfor:

Nu vil vi konfigurere ADO.NET Source for at udtrække data fra tabellen via forespørgende SQL Server-tabel. For at gøre det skal du dobbeltklikke på "ADO Net source ”. En dialogboks åbnes. I dialogboksen skal vi konfigurere følgende parametre:

1. ADO.NET Connection Manager – udfylder listen over ADO.NET-forbindelser oprettet i SSIS-pakken.

2. Dataadgangstilstand har to muligheder:

en. Hvis du vælger "Tabel eller visning " i "Dataadgangstilstand " rullemenuen, "Navn på tabellen eller visningen ” dropdown vil blive fyldt med tabeller og visninger, der findes i databasen. Se billedet nedenfor:

b. Hvis vi vælger "SQL-kommando ”, åbner den et tekstfelt med flere linjer, hvor vi kan skrive ad-hoc-forespørgslen for at udtrække data fra databasen.

Se billedet nedenfor:

Vi har allerede oprettet ADO.Net-forbindelsen, så i ADO.NET Connection Manager drop-down for at vælge det oprettede navn på den. I denne demo vil vi skrive vores egen forespørgsel, så dataadgangsmetoden vil være "SQL Command ”.

Jeg oprettede en forespørgsel, der vil give mig listen over kunder fra databasen. Denne forespørgsel er nedenfor:

SELECT s.CustomerID, 
s.CustomerName, 
sc.CustomerCategoryName, 
pp.FullName AS PrimaryContact, 
ap.FullName AS AlternateContact, 
s.PhoneNumber, 
s.FaxNumber, 
bg.BuyingGroupName, 
dm.DeliveryMethodName AS DeliveryMethod, 
c.CityName AS CityName 
FROM Sales.Customers AS s 
LEFT OUTER JOIN Sales.CustomerCategories AS sc 
ON s.CustomerCategoryID = sc.CustomerCategoryID 
LEFT OUTER JOIN [Application].People AS pp 
ON s.PrimaryContactPersonID = pp.PersonID 
LEFT OUTER JOIN [Application].People AS ap 
ON s.AlternateContactPersonID = ap.PersonID 
LEFT OUTER JOIN Sales.BuyingGroups AS bg 
ON s.BuyingGroupID = bg.BuyingGroupID 
LEFT OUTER JOIN [Application].DeliveryMethods AS dm 
ON s.DeliveryMethodID = dm.DeliveryMethodID 
LEFT OUTER JOIN [Application].Cities AS c 
ON s.DeliveryCityID = c.CityID

Endelig vil ADO.NET kildeeditor se ud som billedet nedenfor:

Vi kan forhåndsvise outputtet af forespørgslen ved at klikke på "Preview ”-knappen i dialogboksen. Forespørgselsresultatet vil være som vist på billedet nedenfor:

Konfigurer excel-destination

Når vi har konfigureret ADO.NET-kilden, konfigurerer vi Excel-destinationen.

I SSIS værktøjskasse skal du trække og slippe excel-destinationen i dataflow-vinduet og omdøbe den til "Sales Excel-fil ” som vist på billedet nedenfor:

Dobbeltklik på excel-destination. En dialogboks "Excel-destinationseditor ” åbnes for at konfigurere følgende parametre:

1. Excel-forbindelsesadministrator – bruges til at forbinde excel-filen.

2. Dataadgangsmetode . Excel-regneark betragtes som en tabel eller visning. Hvis du vælger "Tabel eller visning ”, rullemenuen “Navn på excel-ark ” vil blive udfyldt med alle arbejdsark, der er oprettet i excel-projektmappen.

3. Navn på excel-ark . Som standard er denne rullemenu deaktiveret. Det aktiveres automatisk, når vi vælger "Tabel eller visning ” som dataadgangstilstand. Vi kan også vælge passende excel-regneark.

Vi har ikke oprettet excel destinationsforbindelse endnu, så for det første er det nødvendigt at oprette en excel destination manager. For at gøre det skal du klikke på "Ny ”-knappen ved siden af ​​“Excel-forbindelsesadministrator ” rullemenu som vist på billedet nedenfor:

Dialogboksen "Excel-forbindelseshåndtering ” vil åbne. Her kan vi konfigurere:

1. Excel-filsti – placeringen af ​​excel-filen.

2. Excel-version – kan vælge excel-version fra rullemenuen.

Til denne demo oprettede jeg en excel-fil og gemte den på min computer. For at finde filen skal du klikke på Gennemse, gå gennem filsystemet, vælge filen og klikke på OK , som vist på billedet nedenfor:

Vælg nu dataadgangstilstand som "Tabel eller visning " i "Excel-destinationsadministrator ”. Listen over excel-regneark vil blive udfyldt i rullemenuen. Vælg "Navn på excel-ark ” fra rullemenuen som vist på billedet nedenfor:

Nu, for at eksportere data fra SQL-tabel til Excel-fil, skal vi kortlægge felterne i SQL-tabel og Excel-fil. For at gøre det skal du trække den blå pil under "Salgsdata for DB-server ”-komponent og slip den på “Sales excel-fil ” komponent som vist på billedet nedenfor:

Dobbeltklik på "Excel-destination ” for at kortlægge markerne. "Excel-destinationseditor (Sales Excel-fil) ” vil åbne. Vælg "Mappings ” valgmulighed fra venstre rude i dialogboksen. Ved kortlægning vil inputkolonner være kolonnerne i SQL Query-output, og destinationskolonner vil være kolonnerne i excel-filen. Det foreslås at beholde det samme navn på SQL Query-output og excel-kolonner. Dette vil gøre kortlægning meget lettere, fordi vi ikke behøver at kortlægge felter manuelt. SSIS vil kortlægge kolonner automatisk.

Til denne demo har excel-fil og SQL Query-output det samme navn, så kortlægningen blev udført automatisk. Bekræft, at kortlægningen er udført korrekt, og klik på OK . Se billedet nedenfor:

Når kortlægningen er afsluttet, vil hele dataflowopgaven se ud som på billedet nedenfor:

Nu kan vi udføre pakken. For at gøre det skal du klikke på "Start ” knap, der er placeret i menulinjen. Hvis pakken afvikles korrekt, kan du se det grønne ikon på hver komponent som vist på billedet nedenfor:

Konfigurer destinationen for flad fil

Som jeg nævnte i begyndelsen af ​​artiklen, i SSIS kan vi eksportere data fra SQL Table til tekstfil. For at gøre det skal vi oprette en flad fildestination i dataflowopgaven. Træk og slip "Flad fildestination ” til dataflowopgavevinduet og omdøb det til “Salgsdata til tekstfil ” som vist på billedet nedenfor:

Dobbeltklik nu på "Flad fildestination ”. En dialogboks "Destinationseditor for flad fil ” åbnes som vist på billedet nedenfor:

Klik nu på "Ny ” knappen ved siden af ​​“Administratorer af flad filforbindelse ” rullemenu. Dialogboksen "Flat filformat ” vil åbne. Den har fire muligheder:eksporter data til afgrænset, fast bredde, fast bredde med rækkeafgrænsere og ragged højre. Til denne demo vil vi vælge "Afgrænset ”.

Vælg "Afgrænset ” og klik på OK som det er vist på billedet nedenfor:

En anden dialogboks "Fad filforbindelsesstyringseditor ” vil åbne. Navngiv forbindelsesadministratoren som "Eksporter salgsdata ” som det er vist på følgende billede:

For at gemme SQL-dataene i en tekstfil kan vi enten oprette den nye tekstfil eller vælge den eksisterende.

Til denne demo vil vi oprette en ny fil. Jeg vil oprette filen med navnet "Salgsdata ”. For at gøre det, klikker jeg på gennemse og bevæger mig gennem filsystemet som vist på billedet nedenfor:

Nu vil vi konfigurere flade filparametre:

  • Eksporterede data fra SQL Table vil blive gemt i det afgrænsede format, så vælg "D ebegrænset " i "Format ” rullemenu som vist på billedet nedenfor:

  • Overskriftsrækkeafgrænser " vil være "{CR}{LF} ”, så vælg passende mulighed i rullemenuen som vist på billedet nedenfor:

  • I tekstfilen vil den første række være kolonneoverskriften, så marker "Kolonnenavne i den første datarække ” som vist på billedet nedenfor:

Klik på OK for at lukke "Fad filforbindelsesstyringseditor ”.

Nu vil vi kortlægge kolonnerne. For at gøre det skal du klikke på "Mappings ” på venstre side af “Destinationseditor til flad fil ” som vist på billedet nedenfor:

Som navnene på "SQL-forespørgselsinput ” og “Tekstfildestination ” kolonner er de samme, SSIS-pakke kortlægger kolonner automatisk.

Når kortlægningen er afsluttet, vil hele dataflowopgaven se ud som på billedet nedenfor:

Nu kan vi udføre pakken. For at gøre det skal du klikke på "Start ” knap, der er placeret i menulinjen. Hvis pakken afvikles korrekt, kan du se det grønne ikon på hver komponent som vist på billedet nedenfor:

Nedenfor er skærmbilledet af data, der blev udtrukket fra SQL-tabellen:

Oversigt

I denne artikel dækkede jeg:

  1. Oprettelse af ADO.NET Connection Manager
  2. Oprettelse af dataflowopgave og konfiguration af kildedatabasen
  3. Konfiguration af excel-destination og eksport af data fra SQL-tabellen til Excel-fil.
  4. Konfiguration af flad-fil-destination og eksport af data fra SQL-tabel til tekstfil.

Nyttige værktøjer:

Devart SSIS Data Flow Components – giver dig mulighed for at integrere database- og clouddata via SQL Server Integration Services.


  1. Regex-mønster inde i SQL Replace-funktionen?

  2. Hvordan vælger jeg effektivt den tidligere ikke-nul værdi?

  3. JPA Tabelnavne med store bogstaver

  4. Hvorfor har nogle kommandoer ingen effekt i psql?