Angeben von Feld- und Zeilenabschlusszeichen (SQL Server)Specify Field and Row Terminators (SQL Server)

Für Zeichendatenfelder geben Ihnen optionale Abschlusszeichen die Möglichkeit, das Ende jedes Felds in einer Datendatei mit einem Feldabschlusszeichen und das Ende jeder Zeile mit einem Zeilenabschlusszeichenzu markieren.For character data fields, optional terminating characters allow you to mark the end of each field in a data file with a field terminator and the end of each row with a row terminator. Abschlusszeichen stellen eine Möglichkeit dar, für Datendatei lesende Programmen anzugeben, wo ein Feld oder eine Zeile endet und ein anderes Feld oder eine andere Zeile beginnt.Terminating characters are one way to indicate to programs that read the data file where one field or row ends and another field or row begins.

Wichtig

Verwenden Sie beim systemeigenen Format oder systemeigenen Unicode-Format Längenpräfixe anstelle der Feldabschlusszeichen.When you use native or Unicode native format, use length prefixes rather than field terminators. Bei Daten im nativen Format kann es zu Konflikten mit Abschlusszeichen kommen, weil Datendateien im nativen Format im internen Binärdatenformat von MicrosoftMicrosoft SQL ServerSQL Server gespeichert werden.Native format data can conflict with terminators because a native-format data file is stored in the MicrosoftMicrosoft SQL ServerSQL Server internal binary data format.

Als Abschlusszeichen unterstützte ZeichenCharacters Supported As Terminators

Von dem Befehl bcp , der BULK INSERT-Anweisung und dem OPENROWSET BULK-Rowsetanbieter wird eine Reihe von Zeichen als Feld- oder Zeilenabschlusszeichen unterstützt und in jedem Fall nach der ersten Instanz jedes Abschlusszeichens gesucht.The bcp command, BULK INSERT statement, and the OPENROWSET bulk rowset provider support a variety of characters as field or row terminators and always look for the first instance of each terminator. In der folgenden Tabelle sind die als Abschlusszeichen unterstützten Zeichen aufgeführt.The following table lists the supported characters for terminators.

AbschlusszeichenTerminating character KennzeichenIndicated by
RegisterkarteTab \t\t

Dies ist das Standardfeldabschlusszeichen.This is the default field terminator.
Neue-Zeile-ZeichenNewline character \n

Dies ist das Standardzeilenabschlusszeichen.This is the default row terminator.
Wagenrücklauf/ZeilenvorschubCarriage return/line feed \r\r
Umgekehrter SchrägstrichBackslash \\
NULL-Abschlusszeichen (nicht sichtbares Abschlusszeichen)Null terminator (nonvisible terminator) \0\0
Jedes Zeichen, das gedruckt werden kann (Steuerzeichen können nicht gedruckt werden, ausgenommen Null, Tabstopp, Neue Zeile und Wagenrücklauf)Any printable character (control characters are not printable, except null, tab, newline, and carriage return) (, A, t, l usw.)(, A, t, l, and so on)
Eine Zeichenfolge von bis zu 10 Zeichen, die gedruckt werden können, einschließlich einiger oder aller oben aufgeführten AbschlusszeichenString of up to 10 printable characters, including some or all of the terminators listed earlier (\t**, Ende, !!!!!!!!!!, \t - \n usw.)(\t**, end, !!!!!!!!!!, \t—\n, and so on)

Um ein Steuerzeichen zu erzeugen, können in Verbindung mit dem Escapezeichen des umgekehrten Schrägstrichs nur die Zeichen t, n, r, 0 und '\0' verwendet werden.Only the t, n, r, 0 and '\0' characters work with the backslash escape character to produce a control character.

Obwohl das NULL-Steuerzeichen (\0) beim Drucken nicht sichtbar ist, handelt es sich dabei um ein eigenständiges Zeichen in der Datendatei.Even though the null control character (\0) is not visible when printed, it is a distinct character in the data file. Dies bedeutet, dass das Verwenden des Null-Steuerzeichens als Feld- oder Zeilenabschlusszeichen einen Unterschied dazu darstellt, überhaupt kein Feld- oder Zeilenabschlusszeichen zu verwenden.This means that using the null control character as a field or row terminator is different than having no field or row terminator at all.

Wichtig

Wenn ein Abschlusszeichen innerhalb der Daten auftritt, wird es als Abschlusszeichen, nicht als Daten interpretiert, und die Daten nach diesem Zeichen als zum nächsten Feld oder Datensatz zugehörig interpretiert.If a terminator character occurs within the data, it is interpreted as a terminator, not as data, and the data after that character is interpreted as belonging to the next field or record. Wählen Sie deshalb die Abschlusszeichen mit Bedacht aus, um sicherzustellen, dass sie nicht anderweitig in Ihren Daten vorkommen.Therefore, choose your terminators carefully to make sure that they never appear in your data. Beispielsweise ist ein niedriges Ersatzzeichen als Feldabschlusszeichen keine gute Wahl, wenn die Daten dieses niedrige Ersatzzeichen enthalten.For example, a low surrogate field terminator would not be a good choice for a field terminator if the data contains that low surrogate.

Verwenden von ZeilenabschlusszeichenUsing Row Terminators

Beim Zeilenabschlusszeichen kann es sich um das gleiche Zeichen wie dem Abschlusszeichen für das letzte Feld handeln.The row terminator can be the same character as the terminator for the last field. Im Allgemeinen ist allerdings ein eigenständiges Zeilenabschlusszeichen nützlich.Generally, however, a distinct row terminator is useful. Bei tabellarischer Ausgabe beenden Sie beispielsweise das letzte Feld in jeder Zeile mit dem Neue-Zeile-Zeichen (\n) und alle anderen Felder mit dem Tabstoppzeichen (\t).For example, to produce tabular output, terminate the last field in each row with the newline character (\n) and all other fields with the tab character (\t). Um jeden Datensatz auf eine eigene Zeile in der Datendatei zu platzieren, geben Sie die Kombination \r\n als Zeilenabschlusszeichen an.To place each data record on its own line in the data file, specify the combination \r\n as the row terminator.

Hinweis

Wenn Sie bcp interaktiv verwenden und \n (Zeilenvorschub) als Zeilenabschlusszeichen angeben, wird dieses Zeichen von bcp automatisch mit dem Präfix \r (Wagenrücklauf) versehen, womit als Ergebnis das Zeilenabschlusszeichen \r\n steht.When you use bcp interactively and specify \n (newline) as the row terminator, bcp automatically prefixes it with a \r (carriage return) character, which results in a row terminator of \r\n.

Angeben von Abschlusszeichen für den MassenexportSpecifying Terminators for Bulk Export

Wenn Sie beim Massenexport von char oder nchar -Daten ein nicht-standardmäßiges Abschlusszeichen verwenden möchten, müssen Sie das Abschlusszeichen für den Befehl bcp angeben.When you bulk export char or nchar data, and want to use a non-default terminator, you must specify the terminator to the bcp command. Zum Angeben der Abschlusszeichen stehen die folgenden Möglichkeiten zur Verfügung:You can specify terminators in any of the following ways:

  • Mit einer Formatdatei, in der das Abschlusszeichen Feld für Feld angegeben wird.With a format file that specifies the terminator on a field-by-field basis.

    Hinweis

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

  • Ohne Formatdatei gibt es die folgenden Alternativen:Without a format file, the following alternatives exist:

    • Verwenden des Schalters -t zum Angeben des Feldabschlusszeichens für alle Felder mit Ausnahme des letzten Felds in einer Zeile, und Verwenden des Schalters -r zum Angeben eines Zeilenabschlusszeichens.Using the -t switch to specify the field terminator for all the fields except the last field in the row and using the -r switch to specify a row terminator.

    • Verwenden eines Zeichenformatschalters (-c oder -w) ohne den Schalter -t , womit als Feldabschlusszeichen das Tabulatorzeichen (\t) festgelegt wird.Using a character-format switch (-c or -w) without the -t switch, which sets the field terminator to the tab character, \t. Dies entspricht der Angabe von -t\t.This is the same as specifying -t\t.

      Hinweis

      Wenn Sie den Schalter -n (native Daten) oder den Schalter -N (native Unicode-Daten) angeben, werden keine Abschlusszeichen eingefügt.If you specify the -n (native data) or -N (Unicode native) switch, terminators are not inserted.

    • Wenn ein interaktiver Befehl bcp die Option in oder out ohne den Formatdateischalter (-f) oder einen Datenformatschalter (-n, -c, -woder -N) enthält, und Sie keine Präfixlänge und Feldlänge angegeben haben, erfordert der Befehl die Eingabe des Feldabschlusszeichens für jedes Feld (standardmäßig kein Abschlusszeichen):If an interactive bcp command contains the in or out option without either the format file switch (-f) or a data-format switch (-n, -c, -w, or -N), and you have chosen not to specify prefix length and field length, the command prompts for the field terminator of each field, with a default of none:

      Enter field terminator [none]:

      Im Allgemeinen ist der Standard angemessen.Generally, the default is a suitable choice. Beachten Sie jedoch bei char - und nchar -Datenfeldern den folgenden Unterabschnitt "Richtlinien für die Verwendung von Abschlusszeichen".However, for char or nchar data fields, see the following subsection, "Guidelines for Using Terminators." Ein Beispiel, das die Verwendung der Aufforderung im Kontext veranschaulicht, finden Sie unter Angeben von Datenformaten für die Kompatibilität bei Verwendung von „bcp“ (SQL Server).For an example that shows this prompt in context, see Specify Data Formats for Compatibility when Using bcp (SQL Server).

      Hinweis

      Nachdem Sie interaktiv alle Felder in einem bcp-Befehl angegeben haben, werden Sie vom Befehl dazu aufgefordert, Ihre Antworten für die einzelnen Felder in einer Nicht-XML-Formatdatei zu speichern.After you interactively specify all of the fields in a bcp command, the command prompts you save your responses for each field in a non-XML format file. Weitere Informationen zu Nicht-XML-Formatdateien finden Sie unter Nicht-XML-Formatdateien (SQL Server).For more information about non-XML format files, see Non-XML Format Files (SQL Server).

Richtlinien für die Verwendung von AbschlusszeichenGuidelines for Using Terminators

In einigen Fällen ist ein Abschlusszeichen für char - oder nchar -Datenfelder nützlich.In some situations, a terminator is useful for a char or nchar data field. Beispiel:For example:

  • Für eine Datenspalte, die einen NULL-Wert in einer Datendatei enthält, die in ein Programm importiert wird, das die Präfixlängeninformation nicht interpretieren kann.For a data column that contains a null value in a data file that will be imported into a program that does not understand the prefix length information.

    Jede Datenspalte, die einen NULL-Wert enthält, gilt als Spalte variable Länge.Any data column that contains a null value is considered variable length. Wenn keine Präfixlängen vorhanden sind, wird ein Abschlusszeichen benötigt, um das Ende eines NULL-Felds zu identifizieren und sicherzustellen, dass die Daten ordnungsgemäß interpretiert werden.In the absence of prefix lengths, a terminator is necessary to identify the end of a null field, making sure that the data is correctly interpreted.

  • Für eine lange Spalte mit fester Länge, deren Breite von vielen Zeilen nicht vollständig genutzt wird.For a long fixed-length column whose space is only partially used by many rows.

    In dieser Situation kann das Angeben eines Abschlusszeichens den Speicherplatz minimieren, sodass das Feld als Feld variabler Länge behandelt werden kann.In this situation, specifying a terminator can minimize storage space allowing the field to be treated as a variable-length field.

BeispieleExamples

In diesem Beispiel wird ein Massenexport von Daten aus der AdventureWorks.HumanResources.Department -Tabelle in die Department-c-t.txt -Datendatei mithilfe des Zeichenformats ausgeführt, wobei ein Komma als Feldabschlusszeichen und das Neue-Zeile-Zeichen (\n) als Zeilenabschlusszeichen dient.This example bulk exports the data from the AdventureWorks.HumanResources.Department table to the Department-c-t.txt data file using character format, with a comma as a field terminator and the newline character (\n) as the row terminator.

Der Befehl bcp verfügt über folgende Schalter.The bcp command contains the following switches.

SchalterSwitch BeschreibungDescription
-c-c Gibt an, dass die Datenfelder als Zeichendaten geladen werden.Specifies that the data fields be loaded as character data.
-t ,-t , Gibt ein Komma (,) als Feldabschlusszeichen an.Specifies a comma (,) as the field terminator.
-r \n-r \n Gibt das Zeilenabschlusszeichen als Neue-Zeile-Zeichen an.Specifies the row terminator as a newline character. Dabei handelt es sich um das standardmäßige Zeilenabschlusszeichen, die Angabe ist also optional.This is the default row terminator, so specifying it is optional.
-T-T Gibt an, dass das Hilfsprogramm bcp die Verbindung mit SQL ServerSQL Server mithilfe integrierter Sicherheit über eine vertrauenswürdige Verbindung herstellt.Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. Wenn -T nicht angegeben wird, müssen Sie -U und -P angeben, um sich erfolgreich anzumelden.If -T is not specified, you need to specify -U and -P to successfully log in.

Weitere Informationen finden Sie unter bcp Utility.For more information, see bcp Utility.

Geben Sie an der MicrosoftMicrosoft Windows-Eingabeaufforderung Folgendes ein:At the MicrosoftMicrosoft Windows command prompt enter:

bcp AdventureWorks.HumanResources.Department out C:\myDepartment-c-t.txt -c -t, -r \n -T  

Dadurch wird Department-c-t.txtmit 16 Datensätzen zu jeweils vier Feldern erstellt.This creates Department-c-t.txt, which contains 16 records with four fields each. Die Felder werden durch ein Komma getrennt.The fields are separated by a comma.

Angeben von Abschlusszeichen für den MassenimportSpecifying Terminators for Bulk Import

Wenn Sie einen Massenimport von char - oder nchar -Daten ausführen, müssen vom Massenimportbefehl die in der Datendatei verwendeten Abschlusszeichen erkannt werden können.When you bulk import char or nchar data, the bulk-import command must recognize the terminators that are used in the data file. Wie Abschlusszeichen angegeben werden können, hängt vom Massenimportbefehl ab:How terminators can be specified depends on the bulk-import command, as follows:

  • bcpbcp

    Für die Angabe von Abschlusszeichen wird bei Massenimport- und -exportvorgängen dieselbe Syntax verwendet.Specifying terminators for an import operation uses the same syntax as for an export operation. Weitere Informationen finden Sie unter "Angeben von Abschlusszeichen für den Massenexport" weiter oben in diesem Thema.For more information, see "Specifying Terminators for Bulk Export," earlier in this topic.

  • BULK INSERTBULK INSERT

    Abschlusszeichen können für einzelne Felder in einer Formatdatei oder für die gesamten Datendatei angegeben werden, indem die in der folgenden Tabelle aufgeführten Qualifizierer verwendet werden:Terminators can be specified for individual fields in a format file or for the whole data file by using the qualifiers shown in the following table.

    QualifiziererQualifier BeschreibungDescription
    FIELDTERMINATOR ='Feldabschlusszeichen'FIELDTERMINATOR ='field_terminator' Gibt das Feldabschlusszeichen an, das für Zeichen- und Unicodezeichen-Datendateien verwendet werden soll.Specifies the field terminator to be used for character and Unicode character data files.

    Der Standardwert ist \t (Tabstoppzeichen).The default is \t (tab character).
    ROWTERMINATOR ='Zeilenabschlusszeichen'ROWTERMINATOR ='row_terminator' Gibt das Zeilenabschlusszeichen an, das für Zeichen- und Unicodezeichen-Datendateien verwendet werden soll.Specifies the row terminator to be used for character and Unicode character data files.

    Der Standardwert ist \n (Neue-Zeile-Zeichen).The default is \n (newline character).

    Weitere Informationen finden Sie unter BULK INSERT (Transact-SQL).For more information, see BULK INSERT (Transact-SQL).

  • INSERT ... SELECT * FROM OPENROWSET(BULK...)INSERT ... SELECT * FROM OPENROWSET(BULK...)

    Für den OPENROWSET-Massenrowsetanbieter können Abschlusszeichen nur in der Formatdatei angegeben werden. Dies ist bis auf Datentypen für große Objekte vorgeschrieben.For the OPENROWSET bulk rowset provider, terminators can be specified only in the format file (which is required except for large-object data types). Wenn von einer Zeichendatendatei ein nicht-standardmäßiges Abschlusszeichen verwendet wird, muss dieses in der Formatdatei definiert werden.If a character data file uses a non-default terminator, it must be defined in the format file. Weitere Informationen finden Sie unter Erstellen einer Formatdatei (SQL Server) und Massenimport von Daten mithilfe einer Formatdatei (SQL Server).For more information, see Create a Format File (SQL Server) and Use a Format File to Bulk Import Data (SQL Server).

    Weitere Informationen zur OPENROWSET BULK-Klausel finden Sie unter OPENROWSET (Transact-SQL).For more information about the OPENROWSET BULK clause, see OPENROWSET (Transact-SQL).

BeispieleExamples

In den Beispielen in diesem Abschnitt wird jeweils ein Massenimport von Zeichendaten aus der Department-c-t.txt -Datendatei, die im vorhergehenden Beispiel erstellt wurde, in die myDepartment -Tabelle in der AdventureWorks2012AdventureWorks2012 -Beispieldatenbank ausgeführt.The examples in this section bulk import character data form the Department-c-t.txt data file created in the preceding example into the myDepartment table in the AdventureWorks2012AdventureWorks2012 sample database. Vor dem Ausführen dieser Beispiele müssen Sie diese Tabelle erstellen.Before you can run the examples, you must create this table. Führen Sie zum Erstellen dieser Tabelle unter dem dbo -Schema im SQL Server Management StudioSQL Server Management Studio -Abfrage-Editor den folgenden Code aus:To create this table under the dbo schema, in SQL Server Management StudioSQL Server Management Studio Query Editor, execute the following code:

USE AdventureWorks;  
GO  
DROP TABLE myDepartment;  
CREATE TABLE myDepartment   
(DepartmentID smallint,  
Name nvarchar(50),  
GroupName nvarchar(50) NULL,  
ModifiedDate datetime not NULL CONSTRAINT DF_AddressType_ModifiedDate DEFAULT (GETDATE())  
);  
GO 

A.A. Verwenden von bcp zum interaktiven Angeben von AbschlusszeichenUsing bcp to interactively specify terminators

Im folgenden Beispiel wird ein Massenimport der Department-c-t.txt -Datendatei mithilfe eines bcp -Befehls ausgeführt.The following example bulk imports the Department-c-t.txt data file using a bcp command. Die mit diesem Befehl verwendeten Schalter sind mit den für den Massenexport gültigen identisch.This command uses the same command switches as the bulk export command. Weitere Informationen finden Sie unter "Angeben von Abschlusszeichen für den Massenexport" weiter oben in diesem Thema.For more information, see "Specifying Terminators for Bulk Export," earlier in this topic.

Geben Sie an der Windows-Eingabeaufforderung Folgendes ein:At the Windows command prompt enter:

bcp AdventureWorks..myDepartment in C:\myDepartment-c-t.txt -c -t , -r \n -T  

B.B. Verwenden von BULK INSERT zum interaktiven Angeben von AbschlusszeichenUsing BULK INSERT to interactively specify terminators

Im folgenden Beispiel wird ein Massenimport der Department-c-t.txt -Datendatei mithilfe einer BULK INSERT -Anweisung ausgeführt, die die in der folgenden Tabelle aufgeführten Qualifizierer verwendet.The following example bulk imports the Department-c-t.txt data file using a BULK INSERT statement that uses the qualifiers shown in the following table.

OptionOption AttributAttribute
DATAFILETYPE ='char'DATAFILETYPE ='char' Gibt an, dass die Datenfelder als Zeichendaten geladen werden.Specifies that the data fields be loaded as character data.
FIELDTERMINATOR =','FIELDTERMINATOR =',' Gibt ein Komma (,) als Feldabschlusszeichen an.Specifies a comma (,) as the field terminator.
ROWTERMINATOR ='\n'ROWTERMINATOR ='\n' Gibt das Zeilenabschlusszeichen als Neue-Zeile-Zeichen an.Specifies the row terminator as a newline character.

Führen Sie im Abfrage-Editor von SQL Server Management StudioSQL Server Management Studio folgenden Code aus:In SQL Server Management StudioSQL Server Management Studio Query Editor, execute the following code:

USE AdventureWorks;  
GO  
BULK INSERT myDepartment FROM 'C:\myDepartment-c-t.txt'  
   WITH (  
      DATAFILETYPE = 'char',  
      FIELDTERMINATOR = ',',  
      ROWTERMINATOR = '\n'  
);  
GO  

Siehe auchSee Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Angeben der Feldlänge mithilfe von bcp (SQL Server) Specify Field Length by Using bcp (SQL Server)
Angeben der Präfixlänge in Datendateien mittels bcp (SQL Server) Specify Prefix Length in Data Files by Using bcp (SQL Server)
Angeben des Dateispeichertyps mithilfe von bcp (SQL Server)Specify File Storage Type by Using bcp (SQL Server)