Verwenden des Zeichenformats zum Importieren und Exportieren von Daten (SQL Server)Use Character Format to Import or Export Data (SQL Server)

Dieses Thema gilt für: JaSQL ServerJaAzure SQL-DatenbankJaAzure SQL Data Warehouse Ja Parallel DatawarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Das Zeichenformat wird für den Massenexport von Daten in eine Textdatei empfohlen, die in einem anderen Programm verwendet werden sollen, oder für den Massenimport von Daten aus einer Textdatei, die von einem anderen Programm generiert werden.Character format is recommended when you bulk export data to a text file that is to be used in another program or when you bulk import data from a text file that is generated by another program.

Das Zeichenformat verwendet das Zeichendatenformat für alle Spalten.Character format uses the character data format for all columns. Es ist nützlich, Informationen im Zeichenformat zu speichern, wenn Sie die Daten mit einem anderen Programm, z. B. als Kalkulationstabelle, verwenden, oder die Daten aus einer Datenbank eines anderen Herstellers wie z. B. Oracle in eine Instanz von SQL ServerSQL Server kopiert werden müssen.Storing information in character format is useful when the data is used with another program, such as a spreadsheet, or when the data needs to be copied into an instance of SQL ServerSQL Server from another database vendor such as Oracle.

Hinweis

Wenn Sie Daten zwischen Instanzen von MicrosoftMicrosoft SQL ServerSQL Server massenübertragen und die Datendatei Unicode-Zeichendaten, aber keine Sonderzeichen oder DBCS-Zeichen enthält, sollten Sie das Unicode-Zeichenformat verwenden.When you bulk transfer data between instances of MicrosoftMicrosoft SQL ServerSQL Server and the data file contains Unicode character data but not any extended or DBCS characters, use the Unicode character format. Weitere Informationen finden Sie unter Verwenden des Unicode-Zeichenformats zum Importieren und Exportieren von Daten (SQL Server).For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).

In diesem Thema:In this Topic:
Überlegungen zum Verwenden des ZeichenformatsConsiderations for Using Character Format
Befehlsoptionen für das ZeichenformatCommand Options for Character Format
BeispieltestbedingungenExample Test Conditions
 ● Beispieltabelle ● Sample Table
 ● Beispiel einer Nicht-XML-Formatdatei ● Sample Non-XML Format File
BeispieleExamples
 ● Verwenden von BCP und dem Zeichenformat zum Exportieren von Daten ● Using bcp and Character Format to Export Data
 ● Verwenden von BCP und dem Zeichenformat zum Importieren von Daten ohne eine Formatdatei ● Using bcp and Character Format to Import Data without a Format File
 ● Verwenden von BCP und dem Zeichenformat zum Importieren von Daten mit einer Nicht-XML-Formatdatei ● Using bcp and Character Format to Import Data with a Non-XML Format File
 ● Verwenden von BULK INSERT und dem Zeichenformat ohne eine Formatdatei ● Using BULK INSERT and Character Format without a Format File
 ● Verwenden von BULK INSERT und dem Zeichenformat mit einer Nicht-XML-Formatdatei ● Using BULK INSERT and Character Format with a Non-XML Format File
 ● Verwenden von OPENROWSET und dem Zeichenformat mit einer Nicht-XML-Formatdatei ● Using OPENROWSET and Character Format with a Non-XML Format File
Verwandte AufgabenRelated Tasks

Überlegungen zum Verwenden des ZeichenformatsConsiderations for Using Character Format

Beim Verwenden des Zeichenformats sollten Sie Folgendes berücksichtigen:When using character format, consider the following:

  • Das Hilfsprogramm „bcp“ trennt standardmäßig die Zeichendatenfelder mit dem Tabstoppzeichen und schließt die Datensätze mit einem Neue-Zeile-Zeichen ab.By default, the bcp utility separates the character-data fields with the tab character and terminates the records with the newline character. Weitere Informationen zum Angeben alternativer Abschlusszeichen finden Sie unter Angeben von Feld- und Zeilenabschlusszeichen (SQL Server).For information about how to specify alternative terminators, see Specify Field and Row Terminators (SQL Server).

  • Standardmäßig werden vor einem Massenexport oder -import von Daten im Zeichenmodus die folgenden Konvertierungen ausgeführt:By default, before the bulk export or import of character-mode data, the following conversions are performed:

    Richtung des MassenvorgangsDirection of bulk operation KonvertierungConversion
    ExportierenExport Konvertiert Daten in die Zeichendarstellung.Converts data to character representation. Wenn dies explizit angefordert wird, werden die Daten in die angeforderte Codepage für Zeichenspalten konvertiert.If explicitly requested, the data is converted to the requested code page for character columns. Wenn keine Codepage angegeben wird, werden die Zeichendaten mithilfe der OEM-Codepage des Clientcomputers konvertiert.If no code page is specified, the character data is converted by using the OEM code page of the client computer.
    ImportierenImport Konvertiert Zeichendaten bei Bedarf in die systemeigene Darstellung und übersetzt die Zeichendaten von der Codepage des Clients in die Codepage der Zielspalte(n).Converts character data to native representation, when necessary, and translates the character data from the client's code page to the code page of the target column(s).
  • Um den Verlust von Sonderzeichen zu verhindern, verwenden Sie das Unicode-Zeichenformat, oder geben Sie eine Codepage an.To prevent loss of extended characters during conversion, either use Unicode character format or specify a code page.

  • Alle sql_variant -Daten, die in einer Zeichenformatdatei gespeichert sind, werden ohne Metadaten gespeichert.Any sql_variant data that is stored in a character-format file is stored without metadata. Alle Datenwerte werden gemäß den Regeln der impliziten Datenkonvertierung in das char -Format konvertiert.Each data value is converted to char format, according to the rules of implicit data conversion. Beim Importieren in eine sql_variant -Spalte werden die Daten als char-Datentyp importiert.When imported into a sql_variant column, the data is imported as char. Beim Importieren in eine Spalte mit einem anderen Datentyp als sql_variant werden die Daten mithilfe der impliziten Konvertierung von char konvertiert.When imported into a column with a data type other than sql_variant, the data is converted from char by using implicit conversion. Weitere Informationen zur Datenkonvertierung finden Sie unter Datentypkonvertierung (Datenbankmodul).For more information about data conversion, see Data Type Conversion (Database Engine).

  • Das Hilfsprogramm „bcp“ exportiert money-Werte in Datendateien im Zeichenformat mit vier Stellen nach dem Dezimaltrennzeichen und ohne Symbole für die Zifferngruppierung, wie z.B. Kommas.The bcp utility exports money values as character-format data files with four digits after the decimal point and without any digit-grouping symbols such as comma separators. So wird z.B. eine money -Spalte mit dem Wert 1,234,567.123456 beim Massenkopieren in eine Datendatei als die Zeichenfolge 1234567.1235 massenexportiert.For example, a money column that contains the value 1,234,567.123456 is bulk exported to a data file as the character string 1234567.1235.

Befehlsoptionen für das ZeichenformatCommand Options for Character Format

Sie können Daten im Zeichenformat in eine Tabelle importieren, indem Sie die folgenden Anweisungen verwenden: 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 character 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 Zeichenformat wird von den folgenden Befehlsoptionen unterstützt:Character format is supported by the following command options:

BefehlCommand OptionOption DescriptionDescription
bcpbcp -c-c Bewirkt, dass das Hilfsprogramm „bcp“ Zeichendaten verwendet.*Causes the bcp utility to use character data.*
BULK INSERTBULK INSERT DATAFILETYPE ='char'DATAFILETYPE ='char' Verwendet das Zeichenformat beim Massenimport von Daten.Use character format when bulk importing data.
OPENROWSETOPENROWSET N/A Muss eine Formatdatei verwendenMust use a format file

*Um Zeichendaten (-c) in ein Format zu laden, das mit früheren Versionen von SQL ServerSQL Server -Clients kompatibel ist, verwenden Sie den Schalter -V .*To load character (-c) 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 myChar und füllt die Tabelle mit einigen ursprünglichen Werten auf.The script below creates a test database, a table named myChar 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.myChar ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myChar
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.myChar;

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 myChar.fmtzu erstellen, die auf dem Schema von myCharbasiert.The following command will use the bcp utility to generate a non-xml format file, myChar.fmt, based on the schema of myChar. 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 folgenden Befehl an der Eingabeaufforderung ein:At a command prompt, enter the following command:

bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c 

REM Review file
Notepad D:\BCP\myChar.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 dem Zeichenformat zum Exportieren von DatenUsing bcp and Character Format to Export Data

Der Schalter-c und der OUT -Befehl.-c 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 folgenden Befehl an der Eingabeaufforderung ein:At a command prompt, enter the following command:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

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

Verwenden von bcp und dem Zeichenformat zum Importieren von Daten ohne eine FormatdateiUsing bcp and Character Format to Import Data without a Format File

Der Schalter-c und der IN -Befehl.-c switch and IN command. Geben Sie folgenden Befehl an der Eingabeaufforderung ein:At a command prompt, enter the following command:

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

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

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

Verwenden von bcp und dem Zeichenformat zum Importieren von Daten mit einer Nicht-XML-FormatdateiUsing bcp and Character Format to Import Data with a Non-XML Format File

Die Schalter-c und -f switches und IN commund.-c and -f switches and IN command. Geben Sie folgenden Befehl an der Eingabeaufforderung ein:At a command prompt, enter the following command:

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

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

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

Verwenden von BULK INSERT und dem Zeichenformat ohne eine FormatdateiUsing BULK INSERT and Character 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.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
    FROM 'D:\BCP\myChar.bcp'
    WITH (
        DATAFILETYPE = 'Char'
        );

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

Verwenden von BULK INSERT und dem Zeichenformat mit einer Nicht-XML-FormatdateiUsing BULK INSERT and Character 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.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
   FROM 'D:\BCP\myChar.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myChar.fmt'
        );

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

Verwenden von OPENROWSET und dem Zeichenformat mit einer Nicht-XML-FormatdateiUsing OPENROWSET and Character 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.myChar;  -- for testing
INSERT INTO TestDatabase.dbo.myChar
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myChar.bcp', 
        FORMATFILE = 'D:\BCP\myChar.fmt'  
        ) AS t1;

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

Verwandte AufgabenRelated Tasks

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

Weitere Informationen finden Sie unterSee Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Datentypen (Transact-SQL) Data Types (Transact-SQL)
Importieren von Daten aus früheren SQL Server-Versionen im nativen Format oder im ZeichenformatImport Native and Character Format Data from Earlier Versions of SQL Server