Freigeben über


Angeben von Feld- und Zeilenabschlusszeichen (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 Zeilenabschlusszeichen zu 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.

Wichtiger HinweisWichtig

Verwenden Sie beim systemeigenen Format oder systemeigenen Unicode-Format Längenpräfixe anstelle der Feldabschlusszeichen. Bei Daten im systemeigenen Format kann es zu Konflikten mit Abschlusszeichen kommen, weil Datendateien im systemeigenen 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

Tabulator

\t

Dies ist das Standardfeldabschlusszeichen.

Neue-Zeile-Zeichen

\n

Dies ist das Standardzeilenabschlusszeichen.

Wagenrücklauf/Zeilenvorschub

\r

Umgekehrter Schrägstrich1

\\

Nullabschlusszeichen (nicht sichtbares Abschlusszeichen)2

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

1 Um ein Steuerzeichen zu erzeugen, können in Verbindung mit dem Escapezeichen Umgekehrter Schrägstrich nur die Zeichen t, n, r, 0 und '\0' verwendet werden.

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

Wichtiger HinweisWichtig

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.

HinweisHinweis

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.

    HinweisHinweis

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

  • Ohne Formatdatei gibt es die folgenden Alternativen:

    • Verwenden des -t-Schalters zum Angeben des Zeilenabschlusszeichens für alle Felder mit Ausnahme des letzten Felds in einer Zeile, und Verwenden des -r-Schalters zum Angeben eines Zeilenabschlusszeichens.

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

      HinweisHinweis

      Wenn Sie den -n- (systemeigene Daten) oder -N-Schalter (systemeigene 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, -w oder -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. Beachten Sie jedoch bei char- und nchar-Datenfeldern den folgenden Unterabschnitt "Richtlinien für die Verwendung von Abschlusszeichen". 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).

      HinweisHinweis

      Nach dem interaktiven Angeben aller Felder in einem Befehl bcp werden Sie dazu aufgefordert, Ihre Antworten für jedes Feld 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.

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 bcp-Befehl 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 für die erfolgreiche Anmeldung -U und -P angeben.

Weitere Informationen finden Sie unter bcp (Hilfsprogramm).

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.txt mit 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 (Neue-Zeile-Zeichen).

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

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

Attribut

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 Abfrage-Editor von SQL Server Management Studio folgenden Code aus:

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

Siehe auch

Verweis

bcp (Hilfsprogramm)

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

Konzepte

Angeben der Feldlänge mithilfe von bcp (SQL Server)

Angeben der Präfixlänge in Datendateien mittels bcp (SQL Server)

Angeben des Dateispeichertyps mithilfe von bcp (SQL Server)