Angeben des Dateispeichertyps mithilfe von bcp

Der Dateispeichertyp beschreibt, wie Daten in der Datendatei gespeichert werden. Daten können folgendermaßen in eine Datendatei exportiert werden: als Datenbanktabellentyp (systemeigenes Format), als Daten in Zeichendarstellung (Zeichenformat) oder als beliebiger Datentyp, bei dem die implizite Konvertierung unterstützt wird, beispielsweise Kopieren von smallint als int. Benutzerdefinierte Datentypen werden als Basistypen exportiert.

HinweisHinweis

Information zur Datenkonvertierung finden Sie unter Datentypkonvertierung (Datenbankmodul).

Die bcp-Eingabeaufforderung für den Dateispeichertyp

Wenn ein interaktiver bcp-Befehl die Option in oder out ohne die Formatdateioption (-f) oder eine Datenformatoption (-n, -c, -w oder -N) enthält, erfordert der Befehl die Eingabe des Dateispeichertyps von jedem Datenfeld wie folgt:

Enter the file storage type of field <field_name> [<default>]:

Ihre Eingabe hängt dann von der Aufgabe ab, die Sie ausführen möchten (siehe folgende Liste).

  • Wenn Sie Daten von einer Instanz von MicrosoftSQL Server in eine Datendatei der kompaktesten Speicherform, die möglich ist (systemeigenes Datenformat), massenexportieren möchten, nehmen Sie die Standard-Dateispeichertypen an, die von bcp bereitgestellt werden. Eine Liste der systemeigenen Dateispeichertypen finden Sie unter "Systemeigene Dateispeichertypen" weiter unten in diesem Thema.

  • Für das Massenexportieren von Daten aus einer Instanz von SQL Server in eine Datendatei im Zeichenformat geben Sie char als Dateispeichertyp für alle Spalten in der Tabelle an.

  • Für den Massenimport von Daten in eine Instanz von SQL Server aus einer Datendatei geben Sie den Dateispeichertyp als char für Typen an, die im Zeichenformat gespeichert sind. Geben Sie für im systemeigenen Datentypformat gespeicherte Daten einen entsprechenden Dateispeichertyp wie folgt an:

    Speichertyp

    Eingabe an der Eingabeaufforderung

    char1

    c[har]

    varchar

    c[har]

    nchar

    w

    nvarchar

    w

    text2

    T[ext]

    ntext2

    W

    binary

    x

    varbinary

    x

    image2

    I[mage]

    datetime

    d[ate]

    smalldatetime

    D

    time

    te

    date

    de

    datetime2

    d2

    datetimeoffset

    do

    decimal

    n

    numeric

    n

    float

    f[loat]

    real

    r

    Int

    i[nt]

    bigint

    B[igint]

    smallint

    s[mallint]

    tinyint

    t[inyint]

    money

    m[oney]

    smallmoney

    M

    bit

    b[it]

    uniqueidentifier

    u

    sql_variant

    V[ariant]

    timestamp

    x

    UDT (ein benutzerdefinierter Datentyp)

    U

    XML

    X

    1 Die Interaktion für Feldlänge, Präfixlänge und Abschlusszeichen bestimmt die Speicherplatzgröße, die in einer Datendatei für nicht auf Zeichen basierende Daten zugeordnet wird, die als char-Dateispeichertyp exportiert werden. Weitere Informationen finden Sie unter Speichern von Daten im Zeichenformat.

    2 Die Datentypen ntext, text und image werden in nachfolgenden Versionen von SQL Server entfernt. Vermeiden Sie den Gebrauch dieser Datentypen bei neuen Entwicklungen, und richten Sie sich auf die Änderung von Anwendungen ein, in denen sie zurzeit verwendet werden. Verwenden Sie stattdessen nvarchar(max), varchar(max) und varbinary(max). Weitere Informationen finden Sie unter Verwenden von Datentypen mit umfangreichen Werten.

Systemeigene Dateispeichertypen

Jeder systemeigene Speichertyp wird in der Formatdatei als entsprechender Datentyp der Hostdatei aufgezeichnet.

Speichertyp

Datentyp in der Hostdatei

char1

SQLCHAR

varchar

SQLCHAR

nchar

SQLNCHAR

nvarchar

SQLNCHAR

text2

SQLCHAR

ntext2

SQLNCHAR

binary

SQLBINARY

varbinary

SQLBINARY

image2

SQLBINARY

datetime

SQLDATETIME

smalldatetime

SQLDATETIM4

decimal

SQLDECIMAL

numeric

SQLNUMERIC

float

SQLFLT8

real

SQLFLT4

int

SQLINT

bigint

SQLBIGINT

smallint

SQLSMALLINT

tinyint

SQLTINYINT

money

SQLMONEY

smallmoney

SQLMONEY4

bit

SQLBIT

uniqueidentifier

SQLUNIQUEID

sql_variant

SQLVARIANT

timestamp

SQLBINARY

UDT (ein benutzerdefinierter Datentyp)

SQLUDT

1 Von Datendateien, die im Zeichenformat gespeichert sind, wird char als Dateispeichertyp verwendet. SQLCHAR ist deshalb für Zeichendatendateien der einzige Datentyp, der in einer Formatdatei aufgeführt ist.

2 Sie können keinen Massenimport von Daten in text-, ntext- und image-Spalten durchführen, die DEFAULT-Werte aufweisen.

Zusätzliche Aspekte von Dateispeichertypen

Beachten Sie beim Massenexport von Daten aus einer Instanz von SQL Server in eine Datendatei Folgendes:

  • Sie können jederzeit char als Dateispeichertyp angeben.

  • Wenn Sie einen Dateispeichertyp eingeben, der eine ungültige implizite Konvertierung darstellt, erzeugt bcp einen Fehler. Obwohl Sie beispielsweise int für smallint-Daten angeben können, kommt es zu Überlauffehlern, wenn Sie smallint für int-Daten angeben.

  • Wenn nicht auf Zeichen basierende Datentypen wie float, money, datetime oder int als entsprechende Datenbanktypen gespeichert werden, werden die Daten im systemeigenen Format von SQL Server in die Datendatei geschrieben.

    HinweisHinweis

    Nach dem interaktiven Angeben aller Felder in einem bcp-Befehl werden Sie dazu aufgefordert, Ihre Antworten für jedes Feld in einer Datei zu speichern, die eine Nicht-XML-Formatdatei ist. Weitere Informationen zu Nicht-XML-Formatdateien finden Sie unter Grundlegendes zu Nicht-XML-Formatdateien.