使用 bcp 指定檔案儲存類型 (SQL Server)

適用範圍: 是SQL Server (所有支援的版本) 是Azure SQL Database 是Azure SQL 受控執行個體 是Azure Synapse Analytics 是平行處理資料倉儲

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

檔案儲存類型的 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 ;針對以原生資料類型格式儲存的資料,則指定其中一個適當的檔案儲存類型:

    檔案儲存類型 在命令提示字元中輸入
    char c[har]
    varchar c[har]
    nchar w
    nvarchar w
    text T[ext]
    ntext2 W
    binary x
    varbinary x
    image I[mage]
    datetime d[ate]
    smalldatetime D
    time te
    date de
    datetime2 d2
    datetimeoffset do
    decimal n
    numeric n
    float f[loat]
    real r
    整數 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

    *欄位長度、前置長度及結束字元的互動,可決定在資料檔案中配置給非字元資料的儲存空間數量,而此資料將匯出為 char 檔案儲存類型。

    **的未來版本將會移除 ntext text image SQL Server資料類型。 請避免在新的開發工作中使用這些資料類型,並規劃修改目前使用這些資料類型的應用程式。 請改用 nvarchar(max)varchar(max)varbinary(max)

原生檔案儲存類型

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

檔案儲存類型 主檔案資料類型
char SQLCHAR
varchar SQLCHAR
nchar SQLNCHAR
nvarchar SQLNCHAR
text SQLCHAR
ntext SQLNCHAR
binary SQLBINARY
varbinary SQLBINARY
image 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

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

**您無法將資料大量匯入具有 DEFAULT 值的 textntextimage 資料行。

檔案儲存類型的額外考量

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

  • 您一律可以將檔案儲存類型指定為 char

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

  • floatmoneydatetimeint 等非字元資料類型儲存為其資料庫類型時,資料會以 SQL Server 原生格式寫入資料檔案中。

    注意

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

另請參閱

bcp 公用程式
資料類型 (Transact-SQL)
使用 bcp 時指定欄位長度 (SQL Server)
指定欄位與資料列結束字元 (SQL Server)
使用 bcp 指定資料檔的前置長度 (SQL Server)