Freigeben über


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

Die Feldlänge weist auf die maximale Anzahl von Zeichen hin, die zum Darstellen der Daten im Zeichenformat benötigt werden. Die Feldlänge ist bereits bekannt, wenn die Daten im systemeigenen Format gespeichert werden (z. B. der int-Datentyp, der 4 Bytes benötigt). Wenn Sie für die Präfixlänge "0" angegeben haben, fordert Sie der bcp-Befehl zur Feldlänge, die Standardfeldlängen und die Auswirkungen der Feldlänge auf die Datenspeicherung in Datendateien auf, die Daten enthalten char .

Die bcp-Eingabeaufforderung für die Feldlänge

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 Feldlänge für jedes Datenfeld auf:

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

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

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

Ob Sie vom bcp -Befehl zur Eingabe der Feldlänge aufgefordert werden, hängt von verschiedenen Faktoren ab, die im Folgenden aufgeführt werden:

  • Wenn Sie Datentypen ohne feste Länge kopieren und eine Präfixlänge von 0 angeben, werden Sie von bcp zur Eingabe einer Feldlänge aufgefordert.

  • Wenn bcp Daten, die nicht auf Zeichen basieren, in Zeichen konvertiert, schlägt das Hilfsprogramm eine Standardfeldlänge vor, die groß genug zum Speichern der Daten ist.

  • Wenn der Dateispeichertyp Daten enthält, die nicht auf Zeichen basieren, fordert bcp nicht zur Eingabe einer Feldlänge auf. Die Daten werden in der nativen Datendarstellung (natives Format) in SQL Server gespeichert.

Verwenden der Standardfeldlängen

Im Allgemeinen empfiehlt Microsoft , dass Sie die von bcp für die Feldlänge vorgeschlagenen Standardwerte übernehmen. Wenn Sie beim Erstellen einer Datendatei im Zeichenmodus die Standardfeldlänge verwenden, können Sie sicherstellen, dass die Daten nicht abgeschnitten werden und auch keine numerischen Überlauffehler auftreten.

Die Angabe falscher Feldlängen kann zu Problemen führen. Wenn Sie beispielsweise numerische Daten kopieren und eine Feldlänge angeben, die für die Daten nicht ausreicht, druckt das Hilfsprogramm bcp eine Überlaufmeldung und kopiert die Daten nicht. Wenn Sie Daten exportieren datetime und eine Feldlänge von weniger als 26 Byte für die Zeichenfolge angeben, schneidet das bcp-Hilfsprogramm die Daten ohne Fehlermeldung ab.

Wichtig

Bei Verwendung der Standardgrößenoption wird von SQL Server eine vollständige Zeichenfolge erwartet. In bestimmten Situationen kann die Verwendung der Standardfeldlänge zu einem Fehler des Typs "unerwartetes Dateiende" führen. In der Regel tritt dieser Fehler mit den money Datentypen datetime auf, wenn nur ein Teil des erwarteten Felds in der Datendatei auftritt, z. B. wenn ein datetime Wert von /yy ohne die Zeitkomponente angegeben wird und daher kürzer als die erwartete Länge von 24 Zeichen eines datetime Werts im char Format ist. Zur Vermeidung dieses Fehlertyps sollten Sie Feldabschlusszeichen oder Datenfelder mit fester Länge verwenden oder die Standardfeldlänge auf einen anderen Wert ändern.

Standardfeldlänge zum Speichern von Dateien im Zeichenformat

In der folgenden Tabelle werden die Standardfeldlängen für Daten aufgeführt, die als Dateien im Zeichenformat gespeichert werden. Daten, die NULL zulassen, besitzen die gleiche Länge wie Daten ohne NULL-Werte.

Datentyp Standardlänge (Zeichen)
char Für die Spalte definierte Länge
varchar Für die Spalte definierte Länge
nchar Zweifaches der für die Spalte definierten Länge
nvarchar Zweifaches der für die Spalte definierten Länge
Text 0
ntext 0
bit 1
binary Das Doppelte der für die Spalte definierten Länge + 1
varbinary Das Doppelte der für die Spalte definierten Länge + 1
image 0
datetime 24
smalldatetime 24
float 30
real 30
int 12
bigint 19
smallint 7
tinyint 5
money 30
smallmoney 30
decimal 41*
numeric 41*
uniqueidentifier 37
timestamp 17
varchar(max) 0
varbinary(max) 0
nvarchar(max) 0
UDT Länge der UDT-Spalte (User-defined Term)
XML 0

*Weitere Informationen zu den decimal Typen und numeric Datentypen finden Sie unter Dezimal- und Numerischer (Transact-SQL).

Hinweis

Eine Spalte des Typs tinyint kann Werte von 0 bis 255 aufweisen. Zum Darstellen einer beliebigen Zahl in diesem Bereich werden maximal drei Zeichen (bei den Werten von 100 bis 255) benötigt.

Standardfeldlänge zum Speichern systemeigener Dateien

In der folgenden Tabelle werden die Standardfeldlängen für Daten aufgeführt, die als Dateien im systemeigenen Format gespeichert werden. Daten, die NULL zulassen, weisen die gleiche Länge auf wie Daten ohne NULL-Werte. Zeichendaten werden immer im Zeichenformat gespeichert.

Datentyp Standardlänge (Zeichen)
bit 1
binary Für die Spalte definierte Länge
varbinary Für die Spalte definierte Länge
image 0
datetime 8
smalldatetime 4
float 8
real 4
int 4
bigint 8
smallint 2
tinyint 1
money 8
smallmoney 4
decimal 1 *
numeric 1 *
uniqueidentifier 16
timestamp 8

1 Weitere Informationen zu den decimal Typen und numeric Datentypen finden Sie unter Dezimal- und numerischer Daten (Transact-SQL).

Wenn Sie eine Datendatei erstellen, die später erneut in SQL Server geladen werden soll, und dabei den Speicherplatz auf ein Minimum begrenzen möchten, sollten Sie ein Längenpräfix mit dem Standard-Dateispeichertyp und der Standardfeldlänge verwenden. Dies gilt für jeden der vorangegangenen Fälle.

Weitere Informationen

bcp (Hilfsprogramm)
Datentypen (Transact-SQL)
Angeben von Feld- und Zeilenabschlusszeichen (SQL Server)
Angeben der Präfixlänge in Datendateien mittels bcp (SQL Server)
Angeben des Dateispeichertyps mithilfe von bcp (SQL Server)
Beibehalten von NULL-Werten oder Verwenden von Standardwerten während des Massenimports (SQL Server)