适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Analytics Platform System (PDW)
“文件存储类型” 说明数据在数据文件中的存储方式。 数据可以按其数据库表类型(本机格式)、字符表示形式(字符格式)或支持隐式转换的任何数据类型导出到数据文件中;例如,以 int 形式复制 smallint。用户定义的数据类型将按其基类型导出。
有关文件存储类型的 BCP 命令提示
如果交互式 bcp 命令包含in 或 out 选项,但没有格式文件开关 (-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 wnvarchar wtext T[ext]ntext2 Wbinary xvarbinary x图像 I[mage]datetime d[ate]smalldatetime Dtime tedate dedatetime2 d2datetimeoffset do小数 nnumeric nfloat f[loat]真实 rInt i[nt]bigint B[igint]smallint s[mallint]tinyint t[inyint]money m[oney]smallmoney M比特 b[it]uniqueidentifier usql_variant V[ariant]timestamp xUDT (用户定义的数据类型) UXML X矢量 v[ector]字段长度、前缀长度和终止符共同决定了在以 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 |
| 小数 | SQLDECIMAL |
| numeric | SQLNUMERIC |
| float | SQLFLT8 |
| 真实 | SQLFLT4 |
| int | SQLINT |
| bigint | SQLBIGINT |
| smallint | SQLSMALLINT |
| tinyint | SQLTINYINT |
| money | SQLMONEY |
| smallmoney | SQLMONEY4 |
| 比特 | SQLBIT |
| uniqueidentifier | SQLUNIQUEID |
| sql_variant | SQLVARIANT |
| timestamp | SQLBINARY |
| UDT(用户定义的数据类型) | SQLUDT |
| 矢量 | SQLVECTOR |
以字符格式存储的数据文件使用 char 作为文件存储类型。 因此,对于字符数据文件,SQLCHAR 是唯一出现在格式化文件中的数据类型。
无法将数据批量导入包含
DEFAULT值的text、ntext和image列。
文件存储类型的其他注意事项
当您将数据从 SQL Server 实例大容量导出到数据文件时:
始终可以将 char 指定为文件存储类型,但 vector 类型列不支持与 char 类型之间的转换。
如果您输入的文件存储类型表示无效的隐式转换, bcp 将失败;例如,尽管您可以为 int 数据指定 smallint 类型,但是如果您为 smallint 数据指定 int 类型,将导致溢出错误。
当非字符数据类型(如 float、 money、 datetime或 int )存储为其数据库类型时,数据将写入 SQL Server 本机格式的数据文件。
注意
在你以交互方式指定 bcp 命令中的所有字段后,该命令会提示你将自己对每个字段的响应保存到一个非 XML 格式化文件中。 有关非 XML 格式文件的详细信息,请参阅非 XML 格式化文件 (SQL Server)。