Verwenden des systemeigenen Formats zum Importieren oder Exportieren von Daten (SQL Server)Use Native Format to Import or Export Data (SQL Server)

Das systemeigene Format wird für die Massenübertragung von Daten zwischen mehreren Instanzen von SQL ServerSQL Server mithilfe einer Datendatei empfohlen, die keinen erweiterten oder Doppelbyte-Zeichensatz (Double-Byte Character Set, DBCS) enthält.Native format is recommended when you bulk transfer data between multiple instances of SQL ServerSQL Server using a data file that does not contain any extended/double-byte character set (DBCS) characters.

Hinweis

Für die Massenübertragung von Daten zwischen mehreren Instanzen von SQL ServerSQL Server mithilfe einer Datendatei, die erweiterte Zeichen oder DBCS-Zeichen enthält, sollten Sie das systemeigene Unicode-Format verwenden.To bulk transfer data between multiple instances of SQL ServerSQL Server by using a data file that contains extended or DBCS characters, you should use the Unicode native format. Weitere Informationen finden Sie unter Verwenden des nativen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server).For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

Das systemeigene Format erhält die systemeigenen Datentypen einer Datenbank.Native format maintains the native data types of a database. Das systemeigene Format ist für die Hochgeschwindigkeitsübertragung von Daten zwischen SQL ServerSQL Server -Tabellen konzipiert.Native format is intended for high-speed data transfer of data between SQL ServerSQL Server tables. Wenn Sie eine Formatdatei verwenden, müssen Quell- und Zieltabelle nicht identisch sein.If you use a format file, the source and target tables do not need to be identical. Die Datenübertragung besteht aus zwei Schritten:The data transfer involves two steps:

  1. Massenexportieren der Daten aus einer Quelltabelle in eine DatendateiBulk exporting the data from a source table into a data file

  2. Massenimportieren der Daten aus der Datendatei in die ZieltabelleBulk importing the data from the data file into the target table

Durch die Verwendung des systemeigenen Formats zwischen identischen Tabellen wird die unnötige Konvertierung von Datentypen in das und aus dem Zeichenformat vermieden und somit Zeit und Speicherplatz gespart.The use of native format between identical tables avoids unnecessary conversion of data types to and from character format, saving time and space. Um eine optimale Übertragungsrate zu erreichen, werden jedoch wenige Überprüfungen der Datenformatierung vorgenommen.To achieve the optimum transfer rate, however, few checks are performed regarding data formatting. Berücksichtigen Sie, um Probleme mit den geladenen Daten zu verhindern, die folgende Einschränkungsliste.To prevent problems with the loaded data, see the following restrictions list.

In diesem Thema:In this Topic:
EinschränkungenRestrictions
Behandlung von Daten im systemeigenen Format durch bcpHow bcp Handles Data in Native Format
Befehlsoptionen für das systemeigene FormatCommand Options for Native Format
BeispieltestbedingungenExample Test Conditions

 ● Beispieltabelle ● Sample Table
 ● Beispiel einer Nicht-XML-Formatdatei ● Sample Non-XML Format File
BeispieleExamples
 ● Verwenden von BCP und des nativen Formats zum Exportieren von Daten ● Using bcp and Native Format to Export Data
 ● Verwenden von BCP und des nativen Formats zum Importieren von Daten ohne eine Formatdatei ● Using bcp and Native Format to Import Data without a Format File
 ● Verwenden von BCP und des nativen Formats zum Importieren von Daten mit einer Nicht-XML-Formatdatei ● Using bcp and Native Format to Import Data with a Non-XML Format File
 ● Verwenden von BULK INSERT und des nativen Formats ohne eine Formatdatei ● Using BULK INSERT and Native Format without a Format File
 ● Verwenden von BULK INSERT und des nativen Formats mit einer Nicht-XML-Formatdatei ● Using BULK INSERT and Native Format with a Non-XML Format File
 ● Verwenden von OPENROWSET und des nativen Formats mit einer Nicht-XML-Formatdatei ● Using OPENROWSET and Native Format with a Non-XML Format File
Verwandte AufgabenRelated Tasks

EinschränkungenRestrictions

Um Daten im systemeigenen Format erfolgreich zu importieren, müssen folgende Punkte sichergestellt sein:To import data in native format successfully, ensure that:

  • Die Datendatei liegt im systemeigenen Format vor.The data file is in native format.

  • Die Zieltabelle muss mit der Datendatei kompatibel sein (Spaltenanzahl, Datentyp, Länge, NULL-Status usw. müssen richtig sein), oder Sie müssen eine Formatdatei verwenden, um jedes Feld den entsprechenden Spalten zuzuordnen.Either the target table must be compatible with the data file (having the correct number of columns, data type, length, NULL status, and so forth), or you must use a format file to map each field to its corresponding columns.

    Hinweis

    Wenn Sie Daten aus einer Datei importieren, die nicht mit der Zieltabelle übereinstimmt, kann der Importvorgang zwar erfolgreich sein, aber die in die Zieltabelle eingefügten Datenwerte sind wahrscheinlich falsch.If you import data from a file that is mismatched with the target table, the import operation might succeed but the data values inserted into the target table are likely to be incorrect. Das liegt daran, dass die Daten aus der Datei mithilfe des Formats der Zieltabelle interpretiert werden.This is because the data from the file is interpreted by using the format of the target table. Daher hat jede fehlende Übereinstimmung die Einfügung falscher Werte zur Folge.Therefore, any mismatch results in the insertion of incorrect values. Eine derartige fehlende Übereinstimmung kann jedoch unter keinen Umständen logische oder physische Inkonsistenzen in der Datenbank verursachen.However, under no circumstances can such a mismatch cause logical or physical inconsistencies in the database.

    Weitere Informationen zur Verwendung von Formatdateien finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).For information on using format files, see Format Files for Importing or Exporting Data (SQL Server).

    Ein erfolgreicher Import beschädigt die Zieltabelle nicht.A successful import will not corrupt the target table.

Behandlung von Daten im systemeigenen Format durch bcpHow bcp Handles Data in Native Format

Dieser Abschnitt enthält spezielle Überlegungen zum Exportieren und Importieren von Daten im systemeigenen Format durch das Hilfsprogramm bcp .This section discusses special considerations for how the bcp utility exports and imports data in native format.

  • Nicht auf Zeichen basierende DatenNoncharacter data

    Das Hilfsprogramm „bcp“ verwendet das interne binäre Datenformat von SQL ServerSQL Server , um auf Nichtzeichen basierende Daten aus einer Tabelle in eine Datendatei zu schreiben.The bcp utility uses the SQL ServerSQL Server internal binary data format to write noncharacter data from a table to a data file.

  • Daten vom Typ char oder varcharchar or varchar data

    Am Anfang jedes char - oder varchar -Felds fügt bcp die Präfixlänge hinzu.At the beginning of each char or varchar field, bcp adds the prefix length.

    Wichtig

    Wenn der einheitliche Modus verwendet wird, konvertiert das Hilfsprogramm „bcp“ standardmäßig Zeichen aus SQL ServerSQL Server in OEM-Zeichen, bevor sie in eine Datendatei kopiert werden.When native mode is used, by default, the bcp utility converts characters from SQL ServerSQL Server to OEM characters before it copies them to a data file. Das Hilfsprogramm „bcp“ konvertiert Zeichen aus einer Datendatei in ANSI-Zeichen, bevor der Massenimport der Zeichen in eine SQL ServerSQL Server -Tabelle ausgeführt wird.The bcp utility converts characters from a data file to ANSI characters before it bulk imports them into a SQL ServerSQL Server table. Während dieser Konvertierungen kann es zum Verlust von Daten mit erweiterten Zeichen kommen.During these conversions, extended character data can be lost. Verwenden Sie für erweiterte Zeichen entweder das systemeigene Unicode-Format, oder geben Sie eine Codepage an.For extended characters, either use Unicode native format or specify a code page.

  • sql_variant -Datentypsql_variant data

    Wenn sql_variant -Daten als SQLVARIANT in einer Datendatei im nativen Format gespeichert werden, behalten die Daten alle Merkmale.If sql_variant data is stored as a SQLVARIANT in a native-format data file, the data maintains all of its characteristics. Die Metadaten, die den Datentyp jedes Datenwerts aufzeichnen, werden zusammen mit dem Datenwert gespeichert.The metadata that records the data type of each data value is stored along with the data value. Diese Metadaten werden verwendet, um den Datenwert mit dem gleichen Datentyp in einer sql_variant -Zielspalte neu zu erstellen.This metadata is used to re-create the data value with the same data type in a destination sql_variant column.

    Wenn der Datentyp der Zielspalte nicht sql_variantist, werden alle Datenwerte unter Einhaltung der üblichen Regeln der impliziten Datenkonvertierung in den Datentyp der Zielspalte konvertiert.If the data type of the destination column is not sql_variant, each data value is converted to the data type of the destination column, following the normal rules of implicit data conversion. Wenn während der Datenkonvertierung ein Fehler auftritt, wird für den aktuellen Batch ein Rollback ausgeführt.If an error occurs during data conversion, the current batch is rolled back. Bei Werten vom Typ char und varchar, die zwischen sql_variant-Spalten übertragen werden, treten möglicherweise Probleme bei der Codepagekonvertierung auf.Any char and varchar values that are transferred between sql_variant columns may have code page conversion issues.

    Weitere Informationen zur Datenkonvertierung finden Sie unter Datentypkonvertierung (Datenbankmodul).For more information about data conversion, see Data Type Conversion (Database Engine).

Befehlsoptionen für das systemeigene FormatCommand Options for Native Format

Sie können Daten im nativen Format importieren, unter Verwendung von BCP, BULK INSERT oder INSERT ... SELECT * FROM OPENROWSET(BULK...). Für einen bcp -Befehl oder eine BULK INSERT -Anweisung können Sie das Datenformat in der Anweisung angeben.You can import native format data into a table using bcp, BULK INSERT or INSERT ... SELECT * FROM OPENROWSET(BULK...). For a bcp command or BULK INSERT statement, you can specify the data format in the statement. Für eine INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung müssen Sie das Datenformat in einer Formatdatei angeben.For an INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, you must specify the data format in a format file.

Das native Format wird durch die folgenden Befehlsoptionen unterstützt:Native format is supported by the following command options:

BefehlCommand OptionOption BeschreibungDescription
bcpbcp -n Veranlasst das Hilfsprogramm „bcp“, die nativen Datentypen der Daten zu verwenden.Causes the bcp utility to use the native data types of the data.
BULK INSERTBULK INSERT DATAFILETYPE ='native'DATAFILETYPE ='native' Verwendet die systemeigenen Datentypen (native oder widenative) der Daten.Uses the native or wide native data types of the data. Beachten Sie, dass DATAFILETYPE nicht erforderlich ist, wenn eine Formatdatei die Datentypen angibt.Note that DATAFILETYPE is not needed if a format file specifies the data types.
OPENROWSETOPENROWSET N/A Muss eine Formatdatei verwendenMust use a format file

*Verwenden Sie zum Laden nativer Daten (-n) in ein Format, das mit früheren Versionen von SQL ServerSQL Server -Clients kompatibel ist, den Schalter -V .*To load native (-n) data to a format compatible with earlier versions of SQL ServerSQL Server clients, use the -V switch. Weitere Informationen finden Sie unter Importieren von Daten aus früheren SQL Server-Versionen im nativen Format oder im Zeichenformat.For more information, see Import Native and Character Format Data from Earlier Versions of SQL Server.

Hinweis

Alternativ können Sie die Formatierung pro Feld in einer Formatdatei angeben.Alternatively, you can specify formatting on a per-field basis in a format file. Weitere Informationen finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).For more information, see Format Files for Importing or Exporting Data (SQL Server).

BeispieltestbedingungenExample Test Conditions

Die in diesem Thema beschriebenen Beispiele basieren auf einer Tabelle und einer Formatdatei, die nachstehend definiert werden.The examples in this topic are based on the table, and format file defined below.

BeispieltabelleSample Table

Das folgende Skript erstellt eine Testdatenbank sowie eine Tabelle namens myNative und füllt die Tabelle mit einigen ursprünglichen Werten auf.The script below creates a test database, a table named myNative and populates the table with some initial values. Führen Sie den folgenden Transact-SQL-Befehl in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) aus:Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE dbo.myNative ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myNative
VALUES 
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myNative;

Beispiel einer Nicht-XML-FormatdateiSample Non-XML Format File

SQL Server unterstützt zwei Typen von Formatdateien: Nicht-XML- und XML-Format.SQL Server support two types of format file: non-XML format and XML format. Nicht-XML ist das ursprüngliche Format, das von früheren Versionen von SQL Server unterstützt wird.The non-XML format is the original format that is supported by earlier versions of SQL Server. Ausführliche Informationen finden Sie unter Nicht-XML-Formatdateien (SQL Server) .Please review Non-XML Format Files (SQL Server) for detailed information. Im folgenden Befehl wird das bcp-Hilfsprogramm verwendet, um die Nicht-XML-Formatdatei myNative.fmtzu erstellen, die auf dem Schema von myNativebasiert.The following command will use the bcp utility to generate a non-xml format file, myNative.fmt, based on the schema of myNative. Geben Sie bei der Ausführung eines bcp -Befehls zum Erstellen einer Formatdatei das format -Argument an, und verwenden Sie nul anstatt eines Datendateipfads.To use a bcp command to create a format file, specify the format argument and use nul instead of a data-file path. Die Option „format“ erfordert außerdem die Option -f .The format option also requires the -f option. Zusätzlich wird in diesem Beispiel der Qualifizierer c verwendet, um Zeichendaten anzugeben, und T , um eine vertrauenswürdige Verbindung anzugeben, für die integrierte Sicherheit verwendet wird.In addition, for this example, the qualifier c is used to specify character data, and T is used to specify a trusted connection using integrated security. Geben Sie folgende Befehle an der Eingabeaufforderung ein:At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myNative format nul -f D:\BCP\myNative.fmt -T -n 

REM Review file
Notepad D:\BCP\myNative.fmt

Wichtig

Stellen Sie sicher, dass Ihre Nicht-XML-Formatdatei mit einem Wagenrücklauf/Zeilenvorschub endet.Ensure your non-XML format file ends with a carriage return\line feed. Andernfalls wird Ihnen möglicherweise die folgende Fehlermeldung angezeigt:Otherwise you will likely receive the following error message:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

BeispieleExamples

In dem folgenden Beispiel werden die Datenbank und die Formatdateien verwendet, die oben erstellt wurden.The examples below use the database, and format files created above.

Verwenden von bcp und des nativen Formats zum Exportieren von DatenUsing bcp and Native Format to Export Data

-n und der OUT -Befehl.-n switch and OUT command. Hinweis: Die in diesem Beispiel erstellte Datendatei wird auch in allen nachfolgenden Beispielen verwendet.Note: the data file created in this example will be used in all subsequent examples. Geben Sie folgende Befehle an der Eingabeaufforderung ein:At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myNative OUT D:\BCP\myNative.bcp -T -n

REM Review results
NOTEPAD D:\BCP\myNative.bcp

Verwenden von bcp und des nativen Formats zum Importieren von Daten ohne eine FormatdateiUsing bcp and Native Format to Import Data without a Format File

-n und der IN -Befehl.-n switch and IN command. Geben Sie folgende Befehle an der Eingabeaufforderung ein:At a command prompt, enter the following commands:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"

REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -T -n

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"

Verwenden von bcp und des nativen Formats zum Importieren von Daten mit einer Nicht-XML-FormatdateiUsing bcp and Native Format to Import Data with a Non-XML Format File

-n und -f und der IN -Befehl.-n and -f switches and IN command. Geben Sie folgende Befehle an der Eingabeaufforderung ein:At a command prompt, enter the following commands:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"

REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -f D:\BCP\myNative.fmt -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"

Verwenden von BULK INSERT und des nativen Formats ohne eine FormatdateiUsing BULK INSERT and Native Format without a Format File

DATAFILETYPE -Argument.DATAFILETYPE argument. Führen Sie den folgenden Transact-SQL-Befehl in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) aus:Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
    FROM 'D:\BCP\myNative.bcp'
    WITH (
        DATAFILETYPE = 'native'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myNative;

Verwenden von BULK INSERT und des nativen Formats mit einer Nicht-XML-FormatdateiUsing BULK INSERT and Native Format with a Non-XML Format File

ArgumentFORMATFILE .FORMATFILE argument. Führen Sie den folgenden Transact-SQL-Befehl in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) aus:Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
   FROM 'D:\BCP\myNative.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myNative.fmt'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myNative;

Verwenden von OPENROWSET und des nativen Formats mit einer Nicht-XML-FormatdateiUsing OPENROWSET and Native Format with a Non-XML Format File

ArgumentFORMATFILE .FORMATFILE argument. Führen Sie den folgenden Transact-SQL-Befehl in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) aus:Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myNative;  -- for testing
INSERT INTO TestDatabase.dbo.myNative
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myNative.bcp', 
        FORMATFILE = 'D:\BCP\myNative.fmt'  
        ) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myNative;

Verwandte AufgabenRelated Tasks

So verwenden Sie Datenformate für Massenimport oder MassenexportTo use data formats for bulk import or bulk export

Siehe auchSee Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
Datentypen (Transact-SQL) Data Types (Transact-SQL)
sql_variant (Transact-SQL) sql_variant (Transact-SQL)
Importieren von Daten aus früheren SQL Server-Versionen im nativen Format oder im Zeichenformat Import Native and Character Format Data from Earlier Versions of SQL Server
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Verwenden des nativen Unicode-Formats zum Importieren oder Exportieren von Daten (SQL Server)Use Unicode Native Format to Import or Export Data (SQL Server)