Wanneer u werkt als SQL Server-databasebeheerder of -ontwikkelaar, kunt u niet in uw geïsoleerde SQL Server-wereld leven zonder te communiceren met andere gegevensbronnen. Er is bijvoorbeeld zelden een dag dat u niet wordt gevraagd om gegevens uit een Excel-, Access- of CSV-bestand in uw SQL Server-tabel te importeren. Of, omgekeerd, exporteer een van uw SQL Server-databasetabellen naar een extern bestand zodat deze tabel kan worden gebruikt in een andere database-engine of extern kan worden geanalyseerd door het betreffende team.
SQL Server biedt ons een aantal methoden die kunnen worden gebruikt om een bestaande SQL Server-databasetabel te exporteren naar een Excel- of tekstbestand en om gegevens uit een externe gegevensbron te importeren naar een nieuwe of bestaande SQL Server-databasetabel. In dit artikel zullen we geleidelijk al deze methoden behandelen.
BCP-hulpprogramma
Het hulpprogramma Bulk Copy Program, ook wel BCP genoemd, is een opdrachtregelprogramma dat kan worden gebruikt om een groot aantal rijen uit een gegevensbestand van een besturingssysteem in uw SQL Server-databasetabel te importeren, of om een bestaande SQL Server-databasetabel naar een besturingssysteem te exporteren. systeemgegevensbestand.
De syntaxis van de BCP-tool bevat een grote verscheidenheid aan opties. Dit zijn de meest gebruikte:
- De naam van de SQL Server-databasetabel of -weergave - deze fungeert als de gegevensbron in het geval van een gegevensexportproces en als de bestemming in het geval van een gegevensimportproces.
- De gegevensrichting, waarbij IN geeft gegevensimport en UIT . aan geeft gegevensexport aan.
- De naam van het lokale gegevensbestand dat zal fungeren als de bron in het geval van een gegevensimportproces en als de bestemming in het geval van een gegevensexportproces.
- -S server\instance – dit wordt gebruikt om de naam van de SQL Server-instantie op te geven.
- –d – dit wordt gebruikt om de database te specificeren die de bron- of bestemmingstabel bevat.
- -T – dit wordt gebruikt om aan te geven dat Windows-verificatie wordt gebruikt om verbinding te maken met de SQL Server.
- -U gebruikersnaam en -P wachtwoord – deze specificeren de gebruikersnaam en het wachtwoord die worden gebruikt om verbinding te maken met de SQL Server-instantie.
- Het hulpprogramma Bulk Copy Program, ook bekend als BCP, is een opdrachtregelprogramma dat kan worden gebruikt om een groot aantal rijen uit een gegevensbestand van een besturingssysteem in uw SQL Server-databasetabel te importeren of om een bestaande SQL Server-databasetabel te exporteren naar een gegevensbestand van het besturingssysteem. – deze worden gebruikt om het formaat te specificeren voor het bron- of bestemmingsgegevensbestand en de scheidingstekens die in dat gegevensbestand worden gebruikt.
Het onderstaande BCP-commando wordt bijvoorbeeld gebruikt om te exporteren de inhoud van de Employee_Main databasetabel in bulk in een CSV-bestand, als volgt:
bcp AdventureWorks2016CTP3.dbo.Employee_Main out C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
Deze gegevens worden snel gekopieerd naar een CSV-bestand, zoals weergegeven in het onderstaande resultaat:
Om de inhoud van een CSV-bestand in een databasetabel te importeren, kan het volgende BCP-commando worden gebruikt om dit snel in bulk te bereiken:
bcp AdventureWorks.dbo.Employee_Main in C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
En de gegevens worden in de databasetabel ingevoegd, zoals weergegeven in het onderstaande resultaat:
Door een paar minuten te besteden aan het voorbereiden van deze opdrachten met de juiste opties, kunt u eenvoudig het BCP-hulpprogramma gebruiken om gegevens te importeren uit of te exporteren naar tekstgegevensbestanden.
BULK INSERT
De BULK INSERT T-SQL verklaring werkt vergelijkbaar met de BCP IN commando en wordt gebruikt om gegevens te importeren uit een gegevensbestand dat toegankelijk is voor de SQL Server-service in een SQL Server-databasetabel - allemaal rechtstreeks binnen SQL Server. In tegenstelling tot de BCP IN-opdracht, kan de BULK INSERT-instructie worden gegroepeerd met andere bewerkingen in een enkele SQL Server-transactie die onder uw controle wordt uitgevoerd.
De onderstaande T-SQL-instructie BULK INSERT kan worden gebruikt om gegevens uit een CSV-bestand in een bestaande databasetabel te importeren, waarbij zowel de kolom- als rijscheidingstekens worden gespecificeerd, zoals hieronder weergegeven:
BULK INSERT AdventureWorks.dbo.Employee_Main FROM 'C:\Test\Employees.csv' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\n' ); GO
OPENROWSET
De functie OPENROWSET wordt gebruikt om verbinding te maken met gegevensbronnen met behulp van een OLEDB-verbindingsprovider en vervolgens de opgegeven T-SQL-query te gebruiken om gegevens uit die gegevensbron op te halen. De belangrijkste voordelen van de OPENROWSET-functie ten opzichte van de BCP- en BULK INSERT-methoden zijn de volgende:
- u kunt de gegevens filteren die worden opgehaald door de OPENROWSET-instructie met behulp van een WHERE-clausule
- u kunt het gebruiken in een SELECT-instructie om de gegevens uit de gegevensbron te lezen - niet alleen met de INSERT-instructie
Om de OPENROWSET-instructie te gebruiken, moet u de ad hoc gedistribueerde zoekopdrachten . inschakelen systeemconfiguratie-optie eerst door het onderstaande script te gebruiken:
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO
Nadat u de systeemconfiguratieoptie voor ad-hocdistributie van query's hebt ingeschakeld, kunt u de functie OPENROWSET gebruiken om gegevens in SQL Server-databasetabellen te importeren uit CSV-bestanden met een eerder gedefinieerde gegevensindeling, zoals weergegeven in de onderstaande T-SQL-query:
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;
Gelinkte server
De SQL Server Linked Server is een serverobject dat is geconfigureerd om de SQL Server Database Engine verbinding te laten maken met verschillende typen OLE DB-gegevensbronnen buiten het SQL Server-exemplaar. De gekoppelde server kan eenvoudig worden gemaakt met behulp van de SQL Server Management Studio of T-SQL-opdrachten, zoals hieronder weergegeven:
Eenmaal gemaakt, kan de gekoppelde server eenvoudig worden gebruikt om toegang te krijgen tot de externe gegevensbron en de bijbehorende gegevens in de SQL Server-databasetabel te importeren, zoals weergegeven in de T-SQL-query hieronder:
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$
Wizard SQL Server Export/Import
De wizard SQL Server Export en Import biedt ons een eenvoudige interface voor het maken van SQL Server Integration Service-pakketten die direct kunnen worden gebruikt of worden opgeslagen voor later gebruik. Met deze pakketten kunnen gegevens worden geïmporteerd uit en geëxporteerd naar een breed scala aan gegevensbronnen, beginnend met eenvoudige platte bestanden en eindigend met complexere database-engines.
De wizard Exporteren en importeren kan bijvoorbeeld worden gebruikt om gegevens uit een Excel-gegevensbron te importeren in een bestaande databasetabel. De volgende stappen beschrijven dit proces:
- Klik in Objectverkenner van SQL Server Management Studio met de rechtermuisknop op de AdventureWorks-database die de tabel bevat waarnaar u de gegevens wilt schrijven. Kies vervolgens de optie Gegevens importeren optie uit de Taken submenu:
- De wizard SQL Server importeren en exporteren wordt geopend. In de Kies een gegevensbron geeft u het type gegevensbron op. In dit specifieke voorbeeld kiezen we Microsoft Excel en het volledige pad voor het gewenste Excel-bestand. Klik na het specificeren op de Volgende knop:
- In de Kies een bestemming venster, wordt u gevraagd om het type bestemming op te geven waarnaar de brongegevens zullen worden geschreven. In ons voorbeeld is dat de SQL Server-database. U wordt ook gevraagd om de servernaam, referenties en de naam van de database op te geven waarin de bestemmingstabel zich bevindt. Nadat u al deze informatie heeft verstrekt, klikt u op Volgende verder gaan:
- In de Specificeer tabelkopie of query venster, hebt u een optie om ofwel alle gegevens van de bron naar een bestaande of nieuwe tabel te kopiëren, of een aangepaste query te schrijven om een specifiek gegevensbereik op te halen. Wanneer dit is besloten, klikt u op de Volgende knop:
- In de Selecteer brontabellen en weergaven geeft u het bronblad of de brontabel op van de gegevensbron en de doeltabel waarnaar de brongegevens zullen worden geschreven. U kunt een voorbeeld van de bron bekijken, de toewijzing van de kolommen tussen de bron- en doeltabellen controleren en specificeren of de gegevens moeten worden toegevoegd aan een bestaande tabel of aan een nieuw gegenereerde tabel. Klik op de Volgende knop om verder te gaan:
- In het Pakket opslaan en uitvoeren Window, hebt u de mogelijkheid om het SSIS-pakket dat is gemaakt in de wizard Importeren en exporteren op te slaan om het onmiddellijk uit te voeren of om het op te slaan voor planning of om het later uit te voeren. Klik op de Volgende knop om verder te gaan:
- In de De wizard voltooien venster ziet u een overzicht van de geselecteerde opties en opgegeven instellingen. Klik op de Voltooien knop om te beginnen met het kopiëren van de gegevens:
- Na het voltooien van het kopieerproces zal de wizard het aantal records weergeven dat naar elke tabel is gekopieerd. Als er geen fouten zijn, kunt u klikken op de Sluiten knop om het venster te sluiten:U kunt in het vorige voorbeeld zien dat de wizard Importeren en exporteren eenvoudig kan worden gebruikt om gegevens tussen verschillende typen te kopiëren van gegevensbronnen en bestemmingen, zonder rekening te houden met de relatie tussen de tabellen. Als de tabel een beperking voor een externe sleutel heeft die verwijst naar een van de kolommen van de bovenliggende tabel, moet u de volgorde van het kopieerproces van gegevens handmatig beheren. Om een nieuw gegevensimportproces te starten, moet u bovendien de wizard sluiten en opnieuw openen.
dbForge-gegevenspomp
dbForge Data Pump is een hulpprogramma van derden dat als invoegtoepassing bij de SQL Server Management Studio wordt geleverd. Het kan worden gebruikt om eenvoudig gegevens te migreren tussen SQL Server en verschillende externe gegevensbronnen. Hiermee kunt u importeren en exporteren uit 10+ veelgebruikte gegevensindelingen (tekst, MS Excel, XML, CSV, JSON enz.) met een aantal geavanceerde opties en sjablonen die kunnen worden gebruikt voor terugkerende scenario's.
Na het downloaden van dbForge Data Pump van de Devart-downloadpagina, moet u het op de machine installeren als een SSMS-tool-invoegtoepassing, zoals hieronder weergegeven:
Gegevens exporteren
dbForge Data Pump kan binnen SSMS worden gebruikt om gegevens uit een SQL Server-databasetabel te exporteren of om gegevens in 13 ondersteunde formaten te bekijken, waaronder HTML, Tekst, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL en JSON.
Volg de onderstaande stappen om gegevens uit een specifieke SQL Server-tabel te exporteren:
- Maak verbinding met de SQL Server-instantie via SSMS. Klik vanuit de Objectenverkenner met de rechtermuisknop op de database die de brontabel bevat en kies Gegevens exporteren van de Data Pump submenu:
- In het Exportformaat venster, kiest u de indeling van het bestand waarnaar de brontabelgegevens worden geëxporteerd, of laadt u een eerder opgeslagen sjabloon. In ons voorbeeld kiezen we voor MS Excel 2007. Klik op de Volgende knop om verder te gaan:
- Bekijk in het bronvenster de verbindingsdetails en selecteer de tabel(len) die de te exporteren brongegevens bevatten. Klik op Volgende verder gaan:
- In de Opties venster, controleer en stel de verschillende aanpasbare opties voor het tabelraster van de geëxporteerde gegevens in. Klik vervolgens op Volgende verder gaan:
- In de Gegevensindelingen venster, onder de Kolommen tabblad, selecteer de kolommen die worden geëxporteerd en bekijk hun gegevenstypen:Ook in de Formaten tabblad, stelt u de indeling in van verschillende gegevenstypen voor de kolommen die u hebt geselecteerd. Klik op de Volgende knop om verder te gaan:
- In de Instellingen voor het afdrukken van pagina's venster, kunt u de verschillende opties instellen voor de geëxporteerde bestandspagina's voor afdrukdoeleinden. Klik op Volgende verder gaan:
- In de Geëxporteerde rijen geeft u een reeks rijen op die uit de brontabel moeten worden geëxporteerd of kiest u ervoor om alle tabelrijen te exporteren. Klik op Volgende verder gaan:
- De Foutafhandeling venster biedt u een aantal opties die kunnen worden gebruikt om te specificeren hoe fouten moeten worden verwerkt als ze zich voordoen en waar de uitvoeringsresultaten moeten worden vastgelegd. Klik op de Bewaar Sjabloon om de instellingen op te slaan als een sjabloon om in de toekomst te gebruiken, of druk op de Exporteren om het gegevensexportproces te starten, zoals hieronder weergegeven:Tijdens het gegevensexportproces zal Data Pump u informatieve berichten geven die het aantal records weergeven dat is gekopieerd van de huidige tabel, zoals hieronder weergegeven:Als het gegevensexportproces met succes is voltooid, wordt een samenvatting van het exportproces weergegeven. Er worden opties geboden om het gegenereerde bestand of de bevattende map te openen en meer gegevens van dezelfde pagina te exporteren zonder de tool te sluiten en opnieuw te openen:
Gegevens importeren
dbForge Data Pump kan binnen SSMS worden gebruikt om gegevens in een SQL Server-databasetabel te importeren. De volgende 9 veelgebruikte dataformaten worden ondersteund:Tekst, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) en JSON.
Volg de onderstaande stappen om gegevens van een Excel-blad naar een specifieke SQL Server-tabel te importeren:
- Maak verbinding met de SQL Server-instantie via SSMS. Klik vanuit de Objectenverkenner met de rechtermuisknop op de database die de doeldatabasetabel bevat en kies Importeren Gegevens van de Datapomp submenu:
- In het Bronbestand venster, kies het formaat van het bronbestand of laad gewoon een eerder opgeslagen sjabloon om het importproces uit te voeren. In ons voorbeeld gebruiken we Microsoft Excel 2007 en klikken op Bladeren om het Excel-blad te vinden. Klik op de Volgende knop om verder te gaan:
- In de Bestemming venster, bekijk de verbindingsinformatie en specificeer of de gegevens moeten worden geïmporteerd in een nieuwe tabel of een bestaande tabel uit de verstrekte lijst. Klik op Volgende verder gaan:
- In de Opties venster kunt u verschillende opties instellen die de locatie van de koptekst en de gegevens in het bronbestand specificeren, met de mogelijkheid om een voorbeeld van de bronbestandsgegevens te bekijken voordat u ze importeert. Klik op Volgende verder gaan:
- In de Gegevensindelingen venster, kunt u de indeling van het gegevenstype voor verschillende tekstkolommen in het bronbestand aanpassen voordat u het naar de databasetabel importeert. Klik op Volgende verder gaan:
- In de Kaart venster, kunt u de kolommen van het bronbestand toewijzen aan de doeldatabasetabel, met de mogelijkheid om een voorbeeld van de gegevens te bekijken na het uitvoeren van de wijziging. Klik op Volgende verder gaan:
- In de Modus venster, kunt u de gegevensimportmodus specificeren, zoals het toevoegen van de gegevens aan de bestaande gegevens in de bestemmingstabel en een bulkinvoeging uitvoeren of de gegevens importeren met een enkele transactie. Klik op Volgende verder gaan:
- In de Uitvoer venster, kunt u specificeren om het gegevensimportscript te genereren of op te slaan, of u kunt direct doorgaan met het gegevensimportproces. Klik op Volgende verder gaan:
- De Foutafhandeling window biedt u een aantal opties die kunnen worden gebruikt om te specificeren hoe te handelen als er fouten optreden en waar de uitvoeringsresultaten moeten worden vastgelegd. Klik op de Sjabloon opslaan om de instellingen op te slaan als een sjabloon om in de toekomst te gebruiken, of de Import om het gegevensimportproces te starten, zoals hieronder weergegeven:
- Als het importproces met succes is voltooid, geeft de wizard een overzicht weer van het aantal geïmporteerde records. U hebt de mogelijkheid om het foutenlogboekbestand te bekijken voor het geval er fouten zijn opgetreden en om andere bestanden vanuit hetzelfde venster te importeren zonder dat u de tool hoeft te sluiten en opnieuw te openen:
Uit het vorige voorbeeld blijkt duidelijk dat de dbForge Data Pump-tool ons de mogelijkheid biedt om gegevens van en naar verschillende gegevensbestandsformaten te importeren en exporteren. De wizard die hiervoor is bedoeld, is eenvoudig te configureren, rijk aan verschillende opties en vereist geen ontwikkelingsinspanningen. Het is het proberen waard!