Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Export- und Importmethoden für SQL Server-Datenbanktabellen

Wenn Sie als SQL Server-Datenbankadministrator oder -entwickler arbeiten, können Sie nicht in Ihrer isolierten SQL Server-Welt leben, ohne mit anderen Datenquellen zu kommunizieren. Beispielsweise gibt es kaum einen Tag, an dem Sie nicht aufgefordert werden, Daten aus einer Excel-, Access- oder CSV-Datei in Ihre SQL Server-Tabelle zu importieren. Oder exportieren Sie umgekehrt eine Ihrer SQL Server-Datenbanktabellen in eine externe Datei, damit diese Tabelle in einer anderen Datenbank-Engine verwendet oder extern vom entsprechenden Team analysiert werden kann.

SQL Server bietet uns eine Reihe von Methoden, die zum Exportieren einer vorhandenen SQL Server-Datenbanktabelle in eine Excel- oder Textdatei und zum Importieren von Daten aus einer externen Datenquelle in eine neue oder vorhandene SQL Server-Datenbanktabelle verwendet werden können. In diesem Artikel werden wir nach und nach alle diese Methoden behandeln.

BCP-Dienstprogramm

Das Massenkopierprogramm-Dienstprogramm, auch bekannt als BCP, ist ein Befehlszeilenprogramm, das verwendet werden kann, um eine große Anzahl von Zeilen aus einer Betriebssystem-Datendatei in Ihre SQL Server-Datenbanktabelle zu importieren oder eine vorhandene SQL Server-Datenbanktabelle in ein Betriebssystem zu exportieren Systemdatendatei.

Die Syntax des BCP-Tools enthält eine Vielzahl von Optionen. Dies sind die am häufigsten verwendeten:

  • Der Name der SQL Server-Datenbanktabelle oder -ansicht – dies dient als Datenquelle im Falle des Datenexportprozesses und als Ziel im Falle des Datenimportprozesses.
  • Die Datenrichtung, wobei IN zeigt Datenimport und OUT an zeigt den Datenexport an.
  • Der Name der lokalen Datendatei, die beim Datenimport als Quelle und beim Datenexport als Ziel dient.
  • -S Server\Instanz – Dies wird verwendet, um den Namen der SQL Server-Instanz anzugeben.
  • –d – dies wird verwendet, um die Datenbank anzugeben, die die Quell- oder Zieltabelle enthält.
  • -T – dies wird verwendet, um anzugeben, dass die Windows-Authentifizierung verwendet wird, um sich mit dem SQL-Server zu verbinden.
  • -U Benutzername und -P Passwort – Diese geben den Benutzernamen und das Passwort an, die für die Verbindung mit der SQL Server-Instanz verwendet werden.
  • Das Bulk Copy Program-Dienstprogramm, auch bekannt als BCP, ist ein Befehlszeilen-Dienstprogramm, das zum Importieren einer großen Anzahl von Zeilen aus einer Betriebssystem-Datendatei in Ihre SQL Server-Datenbanktabelle oder zum Exportieren einer vorhandenen SQL Server-Datenbanktabelle verwendet werden kann in eine Betriebssystem-Datendatei. – Diese werden verwendet, um das Format für die Quell- oder Zieldatendatei und die in dieser Datendatei verwendeten Trennzeichen anzugeben.

Zum Beispiel wird der BCP-Befehl unten zum Exportieren verwendet den Inhalt der Employee_Main-Datenbanktabelle wie folgt in großen Mengen in eine CSV-Datei:

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

Diese Daten werden schnell in eine CSV-Datei kopiert, wie im Ergebnis unten gezeigt:

Um den Inhalt einer CSV-Datei in eine Datenbanktabelle zu importieren, kann das folgende BCP-Kommando verwendet werden, um dies schnell in großen Mengen zu erreichen:

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

Und die Daten werden in die Datenbanktabelle eingefügt, wie im Ergebnis unten gezeigt:

Indem Sie ein paar Minuten damit verbringen, diese Befehle mit den richtigen Optionen vorzubereiten, können Sie das BCP-Dienstprogramm ganz einfach verwenden, um Daten aus Textdateien zu importieren oder in Textdateien zu exportieren.

MASSENEINFÜGUNG

Das BULK INSERT T-SQL -Anweisung funktioniert ähnlich wie die BCP IN Befehl und wird verwendet, um Daten aus einer Datendatei, auf die der SQL Server-Dienst zugreifen kann, in eine SQL Server-Datenbanktabelle zu importieren – alles direkt in SQL Server. Im Gegensatz zum BCP IN-Befehl kann die BULK INSERT-Anweisung mit anderen Vorgängen in einer einzelnen SQL Server-Transaktion gruppiert werden, die unter Ihrer Kontrolle ausgeführt wird.

Die folgende BULK INSERT T-SQL-Anweisung kann verwendet werden, um Daten aus einer CSV-Datei in eine vorhandene Datenbanktabelle zu importieren, wobei sowohl die Spalten- als auch die Zeilentrennzeichen angegeben werden, wie unten gezeigt:

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

ÖFFNEN

Die OPENROWSET-Funktion wird verwendet, um mithilfe eines OLEDB-Verbindungsanbieters eine Verbindung zu Datenquellen herzustellen und dann die angegebene T-SQL-Abfrage zu verwenden, um Daten aus dieser Datenquelle abzurufen. Die Hauptvorteile der OPENROWSET-Funktion gegenüber den BCP- und BULK INSERT-Methoden sind die folgenden:

  • Sie können die von der OPENROWSET-Anweisung abgerufenen Daten mit einer WHERE-Klausel filtern
  • Sie können es in einer SELECT-Anweisung zum Lesen der Daten aus der Datenquelle verwenden – nicht nur mit der INSERT-Anweisung

Um die OPENROWSET-Anweisung zu verwenden, müssen Sie die verteilten Ad-hoc-Abfragen aktivieren Systemkonfigurationsoption zuerst mit dem folgenden Skript:

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

Nachdem Sie die Systemkonfigurationsoption für verteilte Ad-hoc-Abfragen aktiviert haben, können Sie die OPENROWSET-Funktion verwenden, um Daten aus CSV-Dateien mit einem zuvor definierten Datenformat in SQL Server-Datenbanktabellen zu importieren, wie in der folgenden T-SQL-Abfrage gezeigt:

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;

Verknüpfter Server

Der SQL Server Linked Server ist ein Serverobjekt, das so konfiguriert ist, dass es dem SQL Server-Datenbankmodul ermöglicht, eine Verbindung zu verschiedenen Typen von OLE DB-Datenquellen außerhalb der SQL Server-Instanz herzustellen. Der Verbindungsserver kann einfach mit SQL Server Management Studio oder T-SQL-Befehlen erstellt werden, wie unten gezeigt:

Nach der Erstellung kann der Verbindungsserver einfach verwendet werden, um auf die Remote-Datenquelle zuzugreifen und die entsprechenden Daten in die SQL Server-Datenbanktabelle zu importieren, wie in der folgenden T-SQL-Abfrage gezeigt:

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$

SQL Server Export/Import-Assistent

Der SQL Server-Export- und -Import-Assistent bietet uns eine einfache Schnittstelle zum Erstellen von SQL Server Integration Service-Paketen, die sofort verwendet oder für eine spätere Verwendung gespeichert werden können. Diese Pakete ermöglichen den Import und Export von Daten aus einer Vielzahl von Datenquellen, angefangen bei einfachen Flatfiles bis hin zu komplexeren Datenbank-Engines.

Der Export- und Import-Assistent kann beispielsweise verwendet werden, um Daten aus einer Excel-Datenquelle in eine vorhandene Datenbanktabelle zu importieren. Die folgenden Schritte beschreiben diesen Vorgang:

  1. Klicken Sie im Objekt-Explorer von SQL Server Management Studio mit der rechten Maustaste auf die AdventureWorks-Datenbank, die die Tabelle enthält, in die Sie die Daten schreiben. Wählen Sie dann Daten importieren Option aus den Aufgaben Untermenü:
  2. Der Import- und Export-Assistent von SQL Server wird geöffnet. In Datenquelle auswählen Geben Sie im Fenster den Typ der Datenquelle an. In diesem speziellen Beispiel wählen wir Microsoft Excel und den vollständigen Pfad für die gewünschte Excel-Datei. Klicken Sie nach der Angabe auf Weiter Taste:
  3. Im Wählen Sie ein Ziel werden Sie aufgefordert, die Art des Ziels anzugeben, in das die Quelldaten geschrieben werden. In unserem Beispiel ist es die SQL Server-Datenbank. Sie werden auch aufgefordert, den Servernamen, die Anmeldeinformationen und den Namen der Datenbank anzugeben, in der sich die Zieltabelle befindet. Nachdem Sie alle diese Informationen angegeben haben, klicken Sie auf Weiter fortfahren:
  4. Im Feld Tabellenkopie oder -abfrage angeben haben Sie die Möglichkeit, entweder alle Daten aus der Quelle in eine vorhandene oder neue Tabelle zu kopieren oder eine benutzerdefinierte Abfrage zu schreiben, um einen bestimmten Datenbereich abzurufen. Wenn dies entschieden ist, klicken Sie auf Weiter Taste:
  5. Im Quelltabellen und -ansichten auswählen Geben Sie im Fenster das Quellblatt oder die Tabelle aus der Datenquelle und die Zieltabelle an, in die die Quelldaten geschrieben werden. Sie haben die Möglichkeit, eine Vorschau der Quelle anzuzeigen, die Zuordnung der Spalten zwischen den Quell- und Zieltabellen zu überprüfen und anzugeben, ob die Daten an eine vorhandene Tabelle oder an eine neu generierte Tabelle angehängt werden sollen. Klicken Sie auf Weiter Schaltfläche zum Fortfahren:
  6. Im Paket speichern und ausführen Windows haben Sie die Möglichkeit, das im Import-/Export-Assistenten erstellte SSIS-Paket zu speichern, um es sofort auszuführen, oder um es zu planen oder später auszuführen. Klicken Sie auf Weiter Schaltfläche zum Fortfahren:
  7. Im Assistenten abschließen Fenster sehen Sie eine Zusammenfassung der ausgewählten Optionen und bereitgestellten Einstellungen. Klicken Sie auf Fertig stellen Schaltfläche zum Starten des Kopierens der Daten:
  8. Nach Abschluss des Kopiervorgangs zeigt der Assistent die Anzahl der in jede Tabelle kopierten Datensätze an. Wenn es keine Fehler gibt, können Sie auf Schließen klicken Schaltfläche zum Schließen des Fensters:Sie können aus dem vorherigen Beispiel ersehen, dass der Import- und Export-Assistent einfach verwendet werden kann, um Daten zwischen verschiedenen Typen zu kopieren von Datenquellen und -zielen, ohne die Beziehung zwischen den Tabellen zu berücksichtigen. Wenn die Tabelle über eine Fremdschlüsseleinschränkung verfügt, die auf eine der Spalten der übergeordneten Tabelle verweist, müssen Sie die Reihenfolge des Datenkopiervorgangs manuell verwalten. Um einen neuen Datenimportvorgang zu starten, müssen Sie außerdem den Assistenten schließen und erneut öffnen.

dbForge-Datenpumpe

dbForge Data Pump ist ein Drittanbieter-Tool, das als Add-In in SQL Server Management Studio enthalten ist. Es kann verwendet werden, um Daten zwischen SQL Server und verschiedenen externen Datenquellen einfach zu migrieren. Es ermöglicht Ihnen den Import und Export aus über 10 häufig verwendeten Datenformaten (Text, MS Excel, XML, CSV, JSON usw.) mit einer Reihe erweiterter Optionen und Vorlagen, die für wiederkehrende Szenarien verwendet werden können.

Nachdem Sie dbForge Data Pump von der Devart-Downloadseite heruntergeladen haben, müssen Sie es wie unten gezeigt als SSMS-Tool-Add-In auf dem Computer installieren:

Datenexport

dbForge Data Pump kann innerhalb von SSMS verwendet werden, um Daten aus einer SQL Server-Datenbanktabelle zu exportieren oder Daten in 13 unterstützten Formattypen anzuzeigen, darunter HTML, Text, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL und JSON.

Führen Sie die folgenden Schritte aus, um Daten aus einer bestimmten SQL Server-Tabelle zu exportieren:

  1. Stellen Sie über SSMS eine Verbindung zur SQL Server-Instanz her. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, die die Quelltabelle enthält, und wählen Sie Daten exportieren aus der Data Pump Untermenü:
  2. Im Exportformat wählen Sie das Format der Datei, in die die Quelltabellendaten exportiert werden, oder laden Sie eine zuvor gespeicherte Vorlage. In unserem Beispiel wählen wir MS Excel 2007. Klicken Sie auf Weiter Schaltfläche zum Fortfahren:
  3. Überprüfen Sie im Quellfenster die Verbindungsdetails und wählen Sie die Tabelle(n) aus, die die zu exportierenden Quelldaten enthalten. Klicken Sie auf Weiter fortfahren:
  4. In den Optionen Überprüfen Sie im Fenster die verschiedenen anpassbaren Optionen für das Tabellenraster der exportierten Daten und legen Sie sie fest. Klicken Sie dann auf Weiter fortfahren:
  5. In den Datenformaten Fenster unter den Spalten Wählen Sie auf der Registerkarte die Spalten aus, die exportiert werden sollen, und überprüfen Sie ihre Datentypen:Auch in den Formaten Legen Sie auf der Registerkarte das Format verschiedener Datentypen für die ausgewählten Spalten fest. Klicken Sie auf Weiter Schaltfläche zum Fortfahren:
  6. In den Seitendruckeinstellungen Fenster können Sie die verschiedenen Optionen für die exportierten Dateiseiten zu Druckzwecken einstellen. Klicken Sie auf Weiter fortfahren:
  7. In den Exportierten Zeilen Geben Sie im Fenster einen Bereich von Zeilen an, die aus der Quelltabelle exportiert werden sollen, oder wählen Sie den Export aller Tabellenzeilen aus. Klicken Sie auf Weiter fortfahren:
  8. Die Fehlerbehandlung Das Fenster bietet Ihnen eine Reihe von Optionen, mit denen Sie angeben können, wie Fehler verarbeitet werden sollen, wenn sie auftreten, und wo die Ausführungsergebnisse protokolliert werden. Klicken Sie auf Vorlage speichern um die Einstellungen als zukünftige Vorlage zu speichern, oder klicken Sie auf Exportieren Schaltfläche, um den Datenexportvorgang zu starten, wie unten gezeigt:Während des Datenexportvorgangs stellt Ihnen Data Pump Informationsmeldungen zur Verfügung, die die Anzahl der kopierten Datensätze anzeigen aktuelle Tabelle, wie unten gezeigt:Wenn der Datenexportvorgang erfolgreich abgeschlossen ist, wird eine Zusammenfassung des Exportvorgangs angezeigt. Es werden Optionen bereitgestellt, um die generierte Datei oder den enthaltenen Ordner zu öffnen und weitere Daten von derselben Seite zu exportieren, ohne das Tool schließen und erneut öffnen zu müssen:

Datenimport

dbForge Data Pump kann innerhalb von SSMS verwendet werden, um Daten in eine SQL Server-Datenbanktabelle zu importieren. Die folgenden 9 weit verbreiteten Datenformate werden unterstützt:Text, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) und JSON.

Führen Sie die folgenden Schritte aus, um Daten aus einer Excel-Tabelle in eine bestimmte SQL Server-Tabelle zu importieren:

  1. Stellen Sie mit SSMS eine Verbindung zur SQL Server-Instanz her. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, die die Zieldatenbanktabelle enthält, und wählen Sie Importieren Daten aus der Datenpumpe Untermenü:
  2. In der Quelldatei wählen Sie das Format der Quelldatei oder laden Sie einfach eine zuvor gespeicherte Vorlage, um den Importvorgang durchzuführen. In unserem Beispiel verwenden wir Microsoft Excel 2007 und klicken auf Durchsuchen Schaltfläche, um die Excel-Tabelle zu suchen. Klicken Sie auf Weiter Schaltfläche zum Fortfahren:
  3. Im Ziel überprüfen Sie die Verbindungsinformationen und geben Sie an, ob die Daten in eine neue Tabelle oder eine vorhandene Tabelle aus der bereitgestellten Liste importiert werden sollen. Klicken Sie auf Weiter fortfahren:
  4. In den Optionen Fenster können Sie verschiedene Optionen festlegen, die den Speicherort des Headers und der Daten in der Quelldatei angeben, mit der Möglichkeit, die Daten der Quelldatei vor dem Importieren in der Vorschau anzuzeigen. Klicken Sie auf Weiter fortfahren:
  5. In den Datenformaten können Sie das Datentypformat für verschiedene Textspalten in der Quelldatei anpassen, bevor Sie sie in die Datenbanktabelle importieren. Klicken Sie auf Weiter fortfahren:
  6. Im Mapping Fenster können Sie die Spalten aus der Quelldatei der Zieldatenbanktabelle zuordnen, mit der Möglichkeit, die Daten nach der Durchführung der Änderung in der Vorschau anzuzeigen. Klicken Sie auf Weiter fortfahren:
  7. In den Modi Fenster können Sie den Datenimportmodus angeben, z. B. die Daten an die vorhandenen Daten in der Zieltabelle anhängen und eine Masseneinfügung durchführen oder die Daten mit einer einzigen Transaktion importieren. Klicken Sie auf Weiter fortfahren:
  8. In der Ausgabe Fenster können Sie angeben, ob das Datenimportskript generiert oder gespeichert oder sofort mit dem Datenimportvorgang fortgefahren werden soll. Klicken Sie auf Weiter fortfahren:
  9. Die Fehlerbehandlung Das Fenster bietet Ihnen eine Reihe von Optionen, mit denen Sie festlegen können, wie Sie sich im Fehlerfall verhalten und wo die Ausführungsergebnisse protokolliert werden sollen. Klicken Sie auf Vorlage speichern um die Einstellungen als Vorlage für die Zukunft zu speichern, oder den Import Schaltfläche, um den Datenimportvorgang zu starten, wie unten gezeigt:
  10. Wenn der Importvorgang erfolgreich abgeschlossen ist, zeigt der Assistent eine Zusammenfassung der Anzahl der importierten Datensätze an. Sie haben die Möglichkeit, die Fehlerprotokolldatei zu überprüfen, falls Fehler aufgetreten sind, und andere Dateien aus demselben Fenster zu importieren, ohne das Tool schließen und erneut öffnen zu müssen:

Aus dem vorherigen Beispiel geht hervor, dass das dbForge Data Pump-Tool uns die Möglichkeit bietet, Daten in und aus verschiedenen Datendateiformaten zu importieren und zu exportieren. Der dafür vorgesehene Assistent ist einfach zu konfigurieren, reich an verschiedenen Optionen und erfordert keinen Entwicklungsaufwand. Es ist einen Versuch wert!