Freigeben über


Angeben von Feld- und Zeilenabschlusszeichen

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

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

  • 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 exakt der Angabe -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 mithilfe von bcp.

      HinweisHinweis

      Nach dem interaktiven Angeben aller Felder in einem bcp-Befehl 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 Grundlegendes zu Nicht-XML-Formatdateien.

Richtlinien für die Verwendung von Abschlusszeichen

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

  • Bei einer Datenspalte mit einem NULL-Wert in einer Datendatei, die in ein Programm importiert wird, das Präfixlängeninformationen nicht versteht.

    Alle Datenspalten mit einem NULL-Wert werden als Spalten mit variabler Länge angesehen. Ohne Präfixlänge ist zur Identifizierung eines NULL-Felds ein Abschlusszeichen erforderlich, damit die Daten korrekt interpretiert werden können.

  • Bei einer Spalte mit langen Daten und fester Länge, bei der der Platz nur teilweise von vielen Zeilen verwendet wird.

    In diesem Fall kann das Angeben eines Abschlusszeichens den Speicherplatz reduzieren, da das Feld dann wie ein Feld mit variabler Länge behandelt wird. Weitere Informationen über das Zusammenwirken von Präfixlänge, Feldlänge und Abschlusszeichen mit der Speicherung von char-Daten finden Sie unter Speichern von Daten im Zeichenformat.

Beispiele

In diesem Beispiel wird ein Massenexport von Daten aus der AdventureWorksHumanResources.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 -U und -P angeben, um sich erfolgreich anzumelden.

Weitere Informationen finden Sie unter bcp (Hilfsprogramm).

Geben Sie an der Microsoft Windows-Eingabeaufforderung Folgendes ein:

bcp AdventureWorks2008R2.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 und Verwenden einer Formatdatei für den Massenimport von Daten.

    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 AdventureWorks2008R2-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 AdventureWorks2008R2;
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 AdventureWorks2008R2..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 AdventureWorks2008R2;
GO
BULK INSERT myDepartment FROM 'C:\myDepartment-c-t.txt'
   WITH (
      DATAFILETYPE = 'char',
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n'
);
GO