Share via


使用 bcp 指定檔案儲存類型

檔案儲存類型描述資料如何儲存在資料檔中。資料可以依其資料庫資料表類型 (原生格式)、依其字元表示 (字元格式),或者依支援隱含轉換的任何資料類型匯出至資料檔;例如,將 smallint 複製為 int。使用者自訂資料類型會依其基底類型匯出。

[!附註]

如需有關資料轉換的資訊,請參閱<資料類型轉換 (Database Engine)>。

檔案儲存類型的 bcp 提示

如果互動式 bcp 命令包含 inout 選項,但沒有格式檔案參數 (-f) 或資料格式參數 (-n-c-w-N),則命令會要求提供每個資料欄位的檔案儲存類型,如下所示:

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

您對此提示的回應視執行的工作而定,如下所示:

  • 若要以最精簡的儲存方式 (原生資料格式) 將 Microsoft SQL Server 執行個體的資料大量匯出到資料檔案,請接受 bcp 提供的預設檔案儲存類型。如需原生檔案儲存類型的清單,請參閱此主題稍後的「原生檔案儲存類型」。

  • 若要以字元格式將 SQL Server 執行個體的資料大量匯出到資料檔案,請將資料表中所有資料行的檔案儲存類型指定為 char。

  • 若要將 SQL Server 執行個體的資料大量匯入資料檔案,對於以字元格式儲存的類型,請將檔案儲存類型指定為 char,對於以原生資料類型格式儲存的資料,請指定其中一個適當的檔案儲存類型:

    檔案儲存類型

    在命令提示字元中輸入

    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 (使用者定義的資料類型)

    U

    XML

    X

    1 欄位長度、前置長度及結束字元的互動,可決定在資料檔案中配置給非字元資料的儲存空間數量,此資料將匯出為 char 檔案儲存類型。如需詳細資訊,請參閱<字元格式資料的儲存>。

    2 SQL Server 的未來版本中將會移除 ntext、text 與 image 資料類型。請避免在新的開發工作中使用這些資料類型,並規劃修改目前使用這些資料類型的應用程式。請改用 nvarchar(max)、varchar(max) 與 varbinary(max)。如需詳細資訊,請參閱<使用大數值資料類型>。

原生檔案儲存類型

每個原生檔案儲存類型都記錄於格式檔案內,作為對應的主檔案資料類型。

檔案儲存類型

主檔案資料類型

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 (使用者自訂的資料類型)

SQLUDT

1 以字元格式儲存的資料檔案會採用 char 做為檔案儲存類型。因此,對於字元資料檔案,SQLCHAR 是唯一會出現在格式檔案中的資料類型。

2 您無法將資料大量匯入具有 DEFAULT 值的 text、ntext 及 image 資料行。

檔案儲存類型的額外考量

當您將 SQL Server 執行個體的資料大量匯出到資料檔案時:

  • 您永遠可以將檔案儲存類型指定為 char。

  • 如果您輸入的檔案儲存類型代表無效的隱含轉換,則 bcp 會失敗;例如,雖然可以針對 smallint 資料指定 int,如果您針對 int 資料指定 smallint,將導致溢位錯誤。

  • 若 float、money、datetime 或 int 等非字元資料類型儲存為其資料庫類型時,資料會以 SQL Server 原生格式寫入資料檔案中。

    [!附註]

    您以互動方式指定 bcp 命令中所有的欄位後,命令會提示您將每個欄位的回應儲存在非 XML 格式的檔案中。如需非 XML 格式檔案的詳細資訊,請參閱<了解非 XML 格式檔案>。