使用 bcp 指定文件存储类型 (SQL Server)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

“文件存储类型” 说明数据在数据文件中的存储方式。 数据可以按其数据库表类型(本机格式)、字符表示形式(字符格式)或支持隐式转换的任何数据类型导出到数据文件中;例如,以 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 ,而对于以本机数据类型格式存储的数据,请按需指定以下文件存储类型之一:

    文件存储类型 在命令提示符下输入
    char c[har]
    varchar c[har]
    nchar w
    nvarchar w
    text T[ext]
    ntext2 W
    binary x
    varbinary x
    图像 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

    *字段长度、前缀长度和终止符一起决定了在以 char 文件存储类型导出的非字符数据的数据文件中分配的存储空间量。

    **SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型。 在新的开发工作中,请避免使用这些数据类型,并修改当前使用它们的应用程序。 请改用 nvarchar(max)varchar(max)varbinary(max)

本机文件存储类型

在格式化文件中,每种本机文件存储类型都记录为相应的宿主文件数据类型。

文件存储类型 宿主文件数据类型
char SQLCHAR
varchar SQLCHAR
nchar SQLNCHAR
nvarchar SQLNCHAR
text SQLCHAR
ntext SQLNCHAR
binary SQLBINARY
varbinary SQLBINARY
图像 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 值的 text、ntext 和 image 列。

文件存储类型的其他注意事项

当您将数据从 SQL Server 实例大容量导出到数据文件时:

  • 您始终可以指定 char 作为文件存储类型。

  • 如果您输入的文件存储类型表示无效的隐式转换, bcp 将失败;例如,尽管您可以为 int 数据指定 smallint 类型,但是如果您为 smallint 数据指定 int 类型,将导致溢出错误。

  • 当非字符数据类型(如 floatmoneydatetimeint )存储为其数据库类型时,数据将写入 SQL Server 本机格式的数据文件。

    注意

    在你以交互方式指定 bcp 命令中的所有字段后,该命令会提示你将自己对每个字段的响应保存到一个非 XML 格式化文件中。 有关非 XML 格式文件的详细信息,请参阅非 XML 格式化文件 (SQL Server)

另请参阅

bcp 实用工具
数据类型 (Transact-SQL)
使用 bcp 指定字段长度 (SQL Server)
指定字段终止符和行终止符 (SQL Server)
使用 bcp 指定数据文件中的前缀长度 (SQL Server)