Angeben von Feld- und Zeilenabschlusszeichen (SQL Server)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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. 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.

Wichtig

Verwenden Sie beim systemeigenen Format oder systemeigenen Unicode-Format Längenpräfixe anstelle der Feldabschlusszeichen. Bei Daten im nativen Format kann es zu Konflikten mit Abschlusszeichen kommen, weil Datendateien im nativen Format im internen Binärdatenformat von Microsoft SQL Server gespeichert werden.

Als Abschlusszeichen unterstützte Zeichen

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. In der folgenden Tabelle sind die als Abschlusszeichen unterstützten Zeichen aufgeführt.

Abschlusszeichen Kennzeichen
Registerkarte \t

Dies ist das Standardfeldabschlusszeichen.
Neue-Zeile-Zeichen \n

Dies ist das Standardzeilenabschlusszeichen.
Wagenrücklauf/Zeilenvorschub \r
Umgekehrter Schrägstrich* \|
NULL-Abschlusszeichen (nicht sichtbares Abschlusszeichen)** \0
Jedes Zeichen, das gedruckt werden kann (Steuerzeichen können nicht gedruckt werden, ausgenommen Null, Tabstopp, Neue Zeile und Wagenrücklauf) (*, A, t, l usw.)
Eine Zeichenfolge von bis zu 10 Zeichen, die gedruckt werden können, einschließlich einiger oder aller oben aufgeführten Abschlusszeichen (**\t**, Ende, !!!!!!!!!!, \t-\n usw.)

*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.

**Obwohl das NULL-Steuerzeichen (\0) beim Drucken nicht sichtbar ist, handelt es sich dabei um ein eigenständiges Zeichen in der Datendatei. Dies bedeutet, dass das Verwenden des Null-Steuerzeichens als Feld- oder Zeilenabschlusszeichen einen Unterschied dazu darstellt, überhaupt kein Feld- oder Zeilenabschlusszeichen zu verwenden.

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. Wählen Sie deshalb die Abschlusszeichen mit Bedacht aus, um sicherzustellen, dass sie nicht anderweitig in Ihren Daten vorkommen. Beispielsweise ist ein niedriges Ersatzzeichen als Feldabschlusszeichen keine gute Wahl, wenn die Daten dieses niedrige Ersatzzeichen enthalten.

Verwenden von Zeilenabschlusszeichen

Beim Zeilenabschlusszeichen kann es sich um das gleiche Zeichen wie dem Abschlusszeichen für das letzte Feld handeln. Im Allgemeinen ist allerdings ein eigenständiges Zeilenabschlusszeichen nützlich. 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). Um jeden Datensatz auf eine eigene Zeile in der Datendatei zu platzieren, geben Sie die Kombination \r\n als Zeilenabschlusszeichen an.

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.

Angeben von Abschlusszeichen für den Massenexport

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. Zum Angeben der Abschlusszeichen stehen die folgenden Möglichkeiten zur Verfügung:

  • Mit einer Formatdatei, in der das Abschlusszeichen Feld für Feld angegeben wird.

    Hinweis

    Informationen zur Verwendung von Formatdateien finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).

  • Ohne Formatdatei gibt es die folgenden Alternativen:

    • 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.

    • Verwenden eines Zeichenformatschalters (-c oder -w) ohne den Schalter -t , womit als Feldabschlusszeichen das Tabulatorzeichen (\t) festgelegt wird. Dies entspricht der Angabe von -t\t.

      Hinweis

      Wenn Sie den Schalter -n (native Daten) oder den Schalter -N (native Unicode-Daten) angeben, werden keine Abschlusszeichen eingefügt.

    • 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):

      Enter field terminator [none]:

      Im Allgemeinen ist der Standard angemessen. Informationen zu Char- oder nchar-Datenfeldern finden Sie jedoch im folgenden Unterabschnitt „Richtlinien für die Verwendung von Terminatoren“. Ein Beispiel, das diese Eingabeaufforderung im Kontext anzeigt, finden Sie unter Angeben von Datenformaten für die Kompatibilität bei Verwendung von 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. Weitere Informationen zu Nicht-XML-Formatdateien finden Sie unter Nicht-XML-Formatdateien (SQL Server).

Richtlinien für die Verwendung von Abschlusszeichen

In einigen Fällen ist ein Abschlusszeichen für char - oder nchar -Datenfelder nützlich. Beispiel:

  • 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.

    Jede Datenspalte, die einen NULL-Wert enthält, gilt als Spalte variable Länge. 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.

  • Für eine lange Spalte mit fester Länge, deren Breite von vielen Zeilen nicht vollständig genutzt wird.

    In dieser Situation kann das Angeben eines Abschlusszeichens den Speicherplatz minimieren, sodass das Feld als Feld variabler Länge behandelt werden kann.

Angeben von \n als Zeilenabschlusszeichen für den Massenexport

Wenn Sie \n als Zeilenabschlusszeichen für den Massenexport angeben oder implizit das standardmäßige Zeilenabschlusszeichen verwenden, gibt „bcp“ als Zeilenabschlusszeichen CRLF (Carriage Return-Line Feed Combination) aus. Wenn Sie nur ein LF-Zeichen (Line Feed) als Zeilenabschlusszeichen ausgeben möchten – dies ist auf Unix- und Linux-Computern typisch –, verwenden Sie Hexadezimalnotation zur Angabe des LF-Zeilenabschlusszeichens. Beispiel:

bcp -r '0x0A'

Beispiele

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.

Der Befehl bcp verfügt über folgende Schalter.

Schalter Beschreibung
-c Gibt an, dass die Datenfelder als Zeichendaten geladen werden.
-t, Gibt ein Komma (,) als Feldabschlusszeichen an.
-r \n Gibt das Zeilenabschlusszeichen als Neue-Zeile-Zeichen an. Dabei handelt es sich um das standardmäßige Zeilenabschlusszeichen, die Angabe ist also optional.
-T Gibt an, dass das Hilfsprogramm bcp die Verbindung mit SQL Server mithilfe integrierter Sicherheit über eine vertrauenswürdige Verbindung herstellt. Wenn -T nicht angegeben wird, müssen Sie -U und -P angeben, um sich erfolgreich anzumelden.

Weitere Informationen finden Sie unter bcp Utility.

Geben Sie an der Microsoft Windows-Eingabeaufforderung Folgendes ein:

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. Die Felder werden durch ein Komma getrennt.

Angeben von Abschlusszeichen für den Massenimport

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. Wie Abschlusszeichen angegeben werden können, hängt vom Massenimportbefehl ab:

  • bcp

    Für die Angabe von Abschlusszeichen wird bei Massenimport- und -exportvorgängen dieselbe Syntax verwendet. Weitere Informationen finden Sie unter "Angeben von Abschlusszeichen für den Massenexport" weiter oben in diesem Thema.

  • BULK 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:

    Qualifizierer Beschreibung
    FIELDTERMINATOR =„field_terminator Gibt das Feldabschlusszeichen an, das für Zeichen- und Unicodezeichen-Datendateien verwendet werden soll.

    Der Standardwert ist \t (Tabstoppzeichen).
    ROWTERMINATOR =„row_terminator Gibt das Zeilenabschlusszeichen an, das für Zeichen- und Unicodezeichen-Datendateien verwendet werden soll.

    Der Standardwert ist \n (Zeilenumbruchzeichen).

    Weitere Informationen finden Sie unter BULK INSERT (Transact-SQL).

  • 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. Wenn von einer Zeichendatendatei ein nicht-standardmäßiges Abschlusszeichen verwendet wird, muss dieses in der Formatdatei definiert werden. Weitere Informationen finden Sie unter Erstellen einer Formatdatei (SQL Server) und Massenimport von Daten mithilfe einer Formatdatei (SQL Server).

    Weitere Informationen zur OPENROWSET BULK-Klausel finden Sie unter OPENROWSET (Transact-SQL).

Angeben von \n als Zeilenabschlusszeichen für den Massenimport

Wenn Sie \n als Zeilenabschlusszeichen für den Massenimport angeben oder implizit das standardmäßige Zeilenabschlusszeichen verwenden, erwarten „bcp“ und die BULK INSERT-Anweisung ein CRLF (Carriage Return-Line Feed Combination) als Zeilenabschlusszeichen. Wenn Ihre Quelldatei nur ein LF-Zeichen (Line Feed) als Zeilenabschlusszeichen verwendet – dies ist typisch für Dateien, die auf Unix- und Linux-Computern generiert werden –, verwenden Sie Hexadezimalnotation zur Angabe des LF-Zeilenabschlusszeichens. Beispiel für eine BULK INSERT-Anweisung:

 ROWTERMINATOR = '0x0A'

Beispiele

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 AdventureWorks2022 -Beispieldatenbank ausgeführt. Vor dem Ausführen dieser Beispiele müssen Sie diese Tabelle erstellen. Führen Sie zum Erstellen dieser Tabelle unter dem dbo-Schema im SQL Server Management Studio-Abfrage-Editor den folgenden Code aus:

USE AdventureWorks2022;
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. Verwenden von bcp zum interaktiven Angeben von Abschlusszeichen

Im folgenden Beispiel wird ein Massenimport der Department-c-t.txt -Datendatei mithilfe eines bcp -Befehls ausgeführt. Die mit diesem Befehl verwendeten Schalter sind mit den für den Massenexport gültigen identisch. Weitere Informationen finden Sie unter "Angeben von Abschlusszeichen für den Massenexport" weiter oben in diesem Thema.

Geben Sie an der Windows-Eingabeaufforderung Folgendes ein:

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

B. Verwenden von BULK INSERT zum interaktiven Angeben von Abschlusszeichen

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.

Option attribute
DATAFILETYPE ='char' Gibt an, dass die Datenfelder als Zeichendaten geladen werden.
FIELDTERMINATOR =',' Gibt ein Komma (,) als Feldabschlusszeichen an.
ROWTERMINATOR ='\n' Gibt das Zeilenabschlusszeichen als Neue-Zeile-Zeichen an.

Führen Sie im SQL Server Management Studio-Abfrage-Editor den folgenden Code aus:

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

Nächste Schritte