使用 bcp 指定文件存储类型

“文件存储类型”描述数据在数据文件中的存储方式。数据可以按其数据库表类型(本机格式)、字符表示形式(字符格式)或支持隐式转换的任何数据类型导出到数据文件中;例如,以 int 形式复制 smallint。用户定义的数据类型将按其基类型导出。

注意注意

有关数据转换的信息,请参阅数据类型转换(数据库引擎)

用于文件存储类型的 bcp 提示符

如果交互式 bcp 命令包含不带格式化文件开关 (-f) 或数据格式开关(-n-c-w-N)的 inout 选项,则该命令将提示输入每个数据字段的文件存储类型,其格式如下所示:

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 格式化文件