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

 

Gilt für: SQL Server 2016

Als kompakteste Form der Dateispeicherung beim Massenexportieren von Daten im systemeigenen Format in eine Datendatei setzt der Befehl bcp mindestens ein Zeichen, das auf die Länge des Felds hinweist, vor jedes Feld. Diese Zeichen werden als Längenpräfixzeichenbezeichnet.

Wenn ein interaktiver bcp-Befehl die Option in oder out, jedoch keinen Formatdateischalter (-f) bzw. keinen Datenformatschalter (-n, -c, -w oder -N) enthält, fordert der Befehl wie folgt zur Eingabe der Präfixlänge für jedes Datenfeld auf:

Enter prefix length of field <field_name> [<default>]:

Wenn Sie 0 angeben, werden Sie von bcp zur Eingabe der Länge des Felds (für einen Zeichendatentyp) oder eines Feldabschlusszeichens (für einen nativen Nicht-Zeichentyp) aufgefordert.

System_CAPS_ICON_note.jpg Hinweis


Nachdem Sie interaktiv alle Felder in einem Befehl bcp 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).

Zum Speichern der Präfixlänge eines Felds muss eine ausreichende Anzahl von Bytes vorhanden sein, um die maximale Länge des Felds darzustellen. Die erforderliche Anzahl von Byte hängt auch ab vom Dateispeichertyp, der NULL-Zulässigkeit einer Spalte und davon, ob die Daten in der Datendatei im systemeigenen Format oder im Zeichenformat gespeichert werden. Beispielsweise erfordert der Datentyp text oder image vier Präfixzeichen, um die Feldlänge zu speichern, während der Datentyp varchar zwei Zeichen erfordert. In der Datendatei werden diese Längenpräfixzeichen im internen binären Datenformat von SQL Server gespeichert.

System_CAPS_ICON_important.jpg Wichtig


Beim Verwenden des systemeigenen Formats sollten Sie anstelle von Feldabschlusszeichen eher Längenpräfixe verwenden. Systemeigene Formatdaten können zu Konflikten mit Abschlusszeichen führen, weil eine Datendatei im systemeigenen Format im internen binären Datenformat von SQL Server gespeichert wird.

System_CAPS_ICON_note.jpg Hinweis


Der Standardwert, der beim Exportieren eines Felds an der Eingabeaufforderung für die Präfixlänge bereitgestellt wird, bezeichnet die effizienteste Präfixlänge für das Feld.

NULL-Werte werden als leeres Feld dargestellt. Um anzuzeigen, dass das Feld leer ist (NULL darstellt), enthält das Feldpräfix den Wert -1. Das heißt, es ist mindestens 1 Byte erforderlich. Beachten Sie, dass eine SQL Server-Tabellenspalte, wenn sie NULL-Werte zulässt, je nach Dateispeichertyp eine Präfixlänge von 1 oder höher benötigt.

Verwenden Sie die in der folgenden Tabelle gezeigten Präfixlängen, wenn Sie einen Massenexport von Daten vornehmen und diese in systemeigenen Datentypen oder im Zeichenformat speichern.

SQL Server

Datentyp
Systemeigenes Format

NOT NULL
Systemeigenes Format

NULL
Zeichenformat

NOT NULL
Zeichenformat

NULL
char2222
varchar2222
nchar2222
nvarchar2222
text*4444
ntext*4444
binary2222
varbinary2222
image*4444
datetime0101
smalldatetime0101
decimal1111
numeric1111
float0101
real0101
int0101
bigint0101
smallint0101
tinyint0101
money0101
smallmoney0101
bit0101
uniqueidentifier1101
timestamp1111
varchar(max)8888
varbinary(max)8888
UDT (ein benutzerdefinierter Datentyp)8888
XML8888
sql_variant8888

*Die Datentypen ntext, text und image werden in einer zukünftigen Version von SQL Server entfernt. Vermeiden Sie die Verwendung dieser Datentypen bei neuen Entwicklungen, und planen Sie die Änderung von Anwendungen, in denen sie aktuell verwendet werden. Verwenden Sie stattdessen nvarchar(max), varchar(max) und varbinary(max).

Wenn Daten massenimportiert werden, entspricht die Präfixlänge dem Wert, der beim ursprünglichen Erstellen der Datendatei angegeben wurde. Wenn die Datendatei nicht mit einem bcp -Befehl erstellt wurde, sind wahrscheinlich keine Längenpräfixzeichen vorhanden. In diesem Fall sollten Sie 0 als Präfixlänge angeben.

System_CAPS_ICON_note.jpg Hinweis


Verwenden Sie die weiter oben in diesem Thema unter Präfixlängen für den Massenexport bereitgestellten Präfixlängen, um die Präfixlänge in einer Datendatei anzugeben, die nicht mithilfe von bcp erstellt wurde.

bcp (Hilfsprogramm)
Datentypen (Transact-SQL)
Angeben der Feldlänge mithilfe von bcp (SQL Server)
Angeben von Feld- und Zeilenabschlusszeichen (SQL Server)
Angeben des Dateispeichertyps mithilfe von bcp (SQL Server)

Community-Beiträge

HINZUFÜGEN
Anzeigen: