sql >> Databasteknik >  >> RDS >> Sqlserver

Export- och importmetoder för SQL Server-databastabeller

När du arbetar som SQL Server-databasadministratör eller utvecklare kan du inte leva i din isolerade SQL Server-värld utan att kommunicera med andra datakällor. Till exempel finns det sällan en dag då du inte blir ombedd att importera data från en Excel-, Access- eller CSV-fil till din SQL Server-tabell. Eller omvänt, exportera en av dina SQL Server-databastabeller till en extern fil så att den här tabellen kan användas i en annan databasmotor eller analyseras externt av motsvarande team.

SQL Server ger oss ett antal metoder som kan användas för att exportera en befintlig SQL Server-databastabell till en Excel- eller textfil, och importera data från en extern datakälla till en ny eller befintlig SQL Server-databastabell. I den här artikeln kommer vi gradvis att täcka alla dessa metoder.

BCP-verktyg

Bulk Copy Program-verktyget, även känt som BCP, är ett kommandoradsverktyg som kan användas för att importera ett stort antal rader från en operativsystemdatafil till din SQL Server-databastabell, eller exportera en befintlig SQL Server-databastabell till en operativsystem systemdatafil.

BCP-verktygets syntax innehåller ett stort antal alternativ. Dessa är de mest använda:

  • Namnet på SQL Server-databastabellen eller -vyn – detta kommer att fungera som datakälla vid dataexportprocess och som destination vid dataimportprocess.
  • Datariktningen, där IN indikerar dataimport och OUT indikerar dataexport.
  • Namnet på den lokala datafilen som kommer att fungera som källa vid dataimportprocess och som destination vid dataexportprocess.
  • -S-server\instans – detta används för att ange SQL Server-instansens namn.
  • –d – detta används för att specificera databasen som innehåller käll- eller måltabellen.
  • -T – detta används för att ange att Windows-autentisering kommer att användas för att ansluta till SQL Server.
  • -U användarnamn och -P-lösenord – dessa anger användarnamnet och lösenordet som används för att ansluta till SQL Server-instansen.
  • Verktyget Bulk Copy Program, även känt som BCP, är ett kommandoradsverktyg som kan användas för att importera ett stort antal rader från en operativsystemdatafil till din SQL Server-databastabell eller exportera en befintlig SQL Server-databastabell till en datafil för operativsystemet. – dessa används för att ange formatet för käll- eller måldatafilen och avgränsare som används i den datafilen.

Till exempel används BCP-kommandot nedan för att exportera innehållet i Employee_Main-databastabellen i bulks till en CSV-fil, enligt följande:

bcp AdventureWorks2016CTP3.dbo.Employee_Main out C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n

Dessa data kommer snabbt att kopieras till en CSV-fil, som visas i resultatet nedan:

För att importera innehållet i en CSV-fil till en databastabell kan följande BCP-kommando användas för att uppnå detta snabbt i bulks:

bcp AdventureWorks.dbo.Employee_Main i C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n

Och data kommer att infogas i databastabellen, som visas i resultatet nedan:

Genom att ägna några minuter åt att förbereda dessa kommandon med lämpliga alternativ kan du enkelt använda BCP-verktyget för att importera data från eller exportera det till textdatafiler.

BULKINSTÄLLNING

BULK INSERT T-SQL uttalandet fungerar på samma sätt som BCP IN kommando och används för att importera data från en datafil som är åtkomlig av SQL Server-tjänsten till en SQL Server-databastabell – allt gjort direkt i SQL Server. Till skillnad från BCP IN-kommandot kan BULK INSERT-satsen grupperas med andra operationer i en enda SQL Server-transaktion som körs under din kontroll.

BULK INSERT T-SQL-satsen nedan kan användas för att importera data från en CSV-fil till en befintlig databastabell, med angivande av både kolumn- och radavgränsare, som visas nedan:

BULK INSERT AdventureWorks.dbo.Employee_Main
FROM 'C:\Test\Employees.csv'
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
);
GO

ÖPPNA ROWSET

OPENROWSET-funktionen används för att ansluta till datakällor med en OLEDB-anslutningsleverantör och sedan använda den angivna T-SQL-frågan för att hämta data från den datakällan. De viktigaste fördelarna med OPENROWSET-funktionen jämfört med metoderna BCP och BULK INSERT är följande:

  • du kan filtrera data som hämtas av OPENROWSET-satsen med hjälp av en WHERE-sats
  • du kan använda den i en SELECT-sats för att läsa data från datakällan – inte bara med INSERT-satsen

För att använda OPENROWSET-satsen måste du aktivera ad hoc-distribuerade frågor systemkonfigurationsalternativ först genom att använda skriptet nedan:

sp_configure 'show advanced options', 1;  
RECONFIGURE;
GO 
sp_configure 'Ad Hoc Distributed Queries', 1;  
RECONFIGURE;  
GO

Efter att ha aktiverat systemkonfigurationsalternativet för ad hoc distribuerade frågor kan du använda OPENROWSET-funktionen för att importera data till SQL Server-databastabeller från CSV-filer med ett tidigare definierat dataformat, som visas i T-SQL-frågan nedan:

INSERT INTO [AdventureWorks].[dbo].[Employee_Main]
([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber])
SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber] 
FROM OPENROWSET(
   BULK 'C:\Test\Employees.csv',
      FORMATFILE = 'C:\Test\Fmt.xml'
) AS rows;

Länkad server

SQL Server Linked Server är ett serverobjekt som är konfigurerat för att tillåta SQL Server Database Engine att ansluta till olika typer av OLE DB-datakällor utanför SQL Server-instansen. Den länkade servern kan enkelt skapas med SQL Server Management Studio eller T-SQL-kommandon, som visas nedan:

När den väl har skapats kan den länkade servern enkelt användas för att komma åt fjärrdatakällan och importera motsvarande data till SQL Server-databastabellen som visas i T-SQL-frågan nedan:

INSERT INTO [AdventureWorks].[dbo].[Employee_Main] 
([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address])
SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address] FROM TEST...Employee_Main$

Export-/importguide för SQL-server

SQL Server Export och Import guiden ger oss ett enkelt gränssnitt för att skapa SQL Server Integration Service-paket som kan användas direkt eller sparas för senare användning. Dessa paket tillåter import av data från och export till en mängd olika datakällor, från enkla platta filer och slutar med mer komplexa databasmotorer.

Export- och importguiden kan till exempel användas för att importera data från en Excel-datakälla till en befintlig databastabell. Följande steg beskriver denna process:

  1. I SQL Server Management Studios Object Explorer, högerklicka på AdventureWorks-databasen som innehåller tabellen som du ska skriva data till. Välj sedan Importera data alternativet från Uppgifter undermeny:
  2. SQL Server Import och Export Wizard kommer att öppnas. I Välj en datakälla fönster, ange typen av datakälla. I det här specifika exemplet kommer vi att välja Microsoft Excel och den fullständiga sökvägen för den önskade Excel-filen. När du har angett det klickar du på Nästa knapp:
  3. I Välj en destination fönster kommer du att bli ombedd att ange vilken typ av destination som källdata ska skrivas till. I vårt exempel är det SQL Server-databas. Du kommer också att bli ombedd att ange servernamn, autentiseringsuppgifter och namnet på databasen där destinationstabellen finns. När du har angett all denna information klickar du på Nästa att fortsätta:
  4. I Ange tabellkopia eller fråga fönster kommer du att ha ett alternativ att antingen kopiera all data från källan till en befintlig eller ny tabell, eller skriva en anpassad fråga för att hämta ett specifikt dataintervall. När detta är bestämt klickar du på Nästa knapp:
  5. I Välj källtabeller och vyer fönstret, ange källbladet eller tabellen från datakällan och destinationstabellen som källdata ska skrivas till. Du kommer att ha möjlighet att förhandsgranska källan, kontrollera mappningen av kolumnerna mellan käll- och måltabellerna och ange om data ska läggas till en befintlig tabell eller till en nygenererad tabell. Klicka på Nästa knappen för att fortsätta:
  6. I Spara och kör paketet Fönster har du möjlighet att spara SSIS-paketet som skapats i import- och exportguiden för att köra det omedelbart eller spara det för att schemalägga eller köra det senare. Klicka på Nästa knappen för att fortsätta:
  7. I Slutför guiden fönstret, kommer du att se en sammanfattning av de valda alternativen och tillhandahållna inställningar. Klicka på Slutför knappen för att börja kopiera data:
  8. När kopieringsprocessen har slutförts visar guiden antalet poster som kopierats till varje tabell. Om det inte finns några fel kan du klicka på Stäng knappen för att stänga fönstret:Du kan se från föregående exempel att import- och exportguiden enkelt kan användas för att kopiera data mellan olika typer av datakällor och destinationer, utan att ta hänsyn till förhållandet mellan tabellerna. Om tabellen har en utländsk nyckel-begränsning som refererar till en av kolumnerna i den överordnade tabellen, måste du hantera ordningen för datakopieringsprocessen manuellt. För att starta en ny dataimportprocess måste du dessutom stänga guiden och öppna den igen.

dbForge Data Pump

dbForge Data Pump är ett tredjepartsverktyg som ingår i SQL Server Management Studio som ett tillägg. Den kan användas för att enkelt migrera data mellan SQL Server och olika externa datakällor. Det låter dig importera och exportera från 10+ vanliga dataformat (Text, MS Excel, XML, CSV, JSON etc.) med ett antal avancerade alternativ och mallar som kan användas för återkommande scenarier.

Efter att ha laddat ner dbForge Data Pump från nedladdningssidan för Devart måste du installera den på maskinen som ett SSMS-verktygstillägg, som visas nedan:

Dataexport

dbForge Data Pump kan användas inom SSMS för att exportera data från en SQL Server-databastabell eller för att visa data i 13 typer av format som stöds inklusive HTML, Text, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL och JSON.

För att exportera data från en specifik SQL Server-tabell, följ stegen nedan:

  1. Anslut till SQL Server-instansen via SSMS. Från objektutforskaren högerklickar du på databasen som innehåller källtabellen och väljer Exportera data från Datapumpen undermeny:
  2. I Exportformat fönster, välj formatet på filen som källtabellsdata ska exporteras till, eller ladda en tidigare sparad mall. I vårt exempel kommer vi att välja MS Excel 2007. Klicka på Nästa knappen för att fortsätta:
  3. I källfönstret granskar du anslutningsinformationen och väljer den eller de tabeller som innehåller källdata som ska exporteras. Klicka på Nästa att fortsätta:
  4. I Alternativ fönster, kontrollera och ställ in de olika anpassningsbara alternativen för den exporterade datans tabellrutnät. Klicka sedan på Nästa att fortsätta:
  5. I Dataformat fönstret under Kolumner fliken, välj kolumnerna som kommer att exporteras och granska deras datatyper:Även i Format fliken, ställ in formatet för olika datatyper för de kolumner du valt. Klicka på Nästa knappen för att fortsätta:
  6. I Inställningar för sidutskrift fönstret kan du ställa in olika alternativ för de exporterade filsidorna för utskriftsändamål. Klicka på Nästa att fortsätta:
  7. I Exporterade rader fönster, ange ett intervall av rader som ska exporteras från källtabellen eller välj att exportera alla tabellrader. Klicka på Nästa att fortsätta:
  8. Felhanteringen fönstret ger dig ett antal alternativ som kan användas för att specificera hur fel ska behandlas om de uppstår och var exekveringsresultaten ska loggas. Klicka på Spara mall för att spara inställningarna som en mall som ska användas i framtiden, eller tryck på Exportera knappen för att starta dataexportprocessen, som visas nedan:Under dataexportprocessen kommer Data Pump att förse dig med informationsmeddelanden som visar antalet poster som kopierats från aktuell tabell, som visas nedan:När dataexportprocessen är klar kommer en sammanfattning av exportprocessen att visas. Alternativ kommer att tillhandahållas för att öppna den genererade filen eller den innehållande mappen och för att exportera mer data från samma sida utan att behöva stänga och öppna verktyget igen:

Dataimport

dbForge Data Pump kan användas inom SSMS för att importera data till en SQL Server-databastabell. Följande 9 allmänt använda dataformat stöds:Text, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) och JSON.

För att importera data från ett Excel-ark till en specifik SQL Server-tabell, följ stegen nedan:

  1. Anslut till SQL Server-instansen med SSMS. Från objektutforskaren högerklickar du på databasen som innehåller måldatabastabellen och väljer Importera Data från datapumpen undermeny:
  2. I Källfilen fönster, välj formatet på källfilen eller ladda helt enkelt en tidigare sparad mall för att utföra importprocessen. I vårt exempel kommer vi att använda Microsoft Excel 2007 och klicka på Bläddra för att hitta Excel-arket. Klicka på Nästa knappen för att fortsätta:
  3. I Destination fönster, granska anslutningsinformationen och ange om data ska importeras till en ny tabell eller en befintlig tabell från den angivna listan. Klicka på Nästa att fortsätta:
  4. I Alternativ fönster kan du ställa in olika alternativ som anger platsen för rubriken och data i källfilen, med möjligheten att förhandsgranska källfilens data innan import. Klicka på Nästa att fortsätta:
  5. I Dataformat fönstret kan du justera datatypsformatet för olika textkolumner i källfilen innan du importerar den till databastabellen. Klicka på Nästa att fortsätta:
  6. I Mappning fönstret kan du mappa kolumnerna från källfilen till måldatabastabellen, med möjligheten att förhandsgranska data efter att ändringen har utförts. Klicka på Nästa att fortsätta:
  7. I lägen fönstret kan du ange dataimportläget, som att lägga till data till befintlig data i destinationstabellen och utföra en massinsättning eller importera data med en enda transaktion. Klicka på Nästa att fortsätta:
  8. I Utdata fönstret kan du ange att generera eller spara dataimportskriptet eller fortsätta med dataimportprocessen omedelbart. Klicka på Nästa att fortsätta:
  9. Felhanteringen fönstret ger dig ett antal alternativ som kan användas för att specificera hur du ska bete dig om fel uppstår och var du ska logga körningsresultaten. Klicka på Spara mall för att spara inställningarna som en mall som ska användas i framtiden, eller Importera knappen för att starta dataimportprocessen, som visas nedan:
  10. När importprocessen är klar visar guiden en sammanfattning av antalet importerade poster. Du kommer att ha möjlighet att granska felloggfilen ifall några fel inträffade och att importera andra filer från samma fönster utan att behöva stänga och öppna verktyget igen:

Det är tydligt från det tidigare exemplet att verktyget dbForge Data Pump ger oss möjligheten att importera och exportera data till och från olika datafilformat. Guiden som är dedikerad för detta är enkel att konfigurera, rik på olika alternativ och kräver inga utvecklingsinsatser. Det förtjänar ett försök!


  1. SQL-serverlogg, leverans och katastrofåterställning, installation och konfiguration -1

  2. Dela kommaavgränsad sträng och infoga i en tabell (int)

  3. Vilken är den minimala installationen som krävs för att distribuera en .NET-applikation med Oracle-klient 11?

  4. SQLite Subquery