导入来自早期版本的 SQL Server 的本机格式数据和字符格式数据
在 2014 SQL Server中,可以使用 bcp 从 SQL Server 2000、SQL Server 2005、SQL Server 2008、SQL Server 2008 R2 导入本机和字符格式数据,或使用 -V 开关SQL Server 2012。 -V 开关导致 SQL Server 2014 使用指定早期版本的 SQL Server 的数据类型,并且数据文件格式与该早期版本中的格式相同。
若要为数据文件指定 SQL Server 早期版本,可将 -V 开关与以下的任一限定符一起使用:
SQL Server 版本 | Qualifier |
---|---|
SQL Server 2000 | -V80 |
SQL Server 2005 | -V90 |
SQL Server 2008 | -V100 |
SQL Server 2012 | -V 110 |
对数据类型的解释
SQL Server 2005 及更高版本支持某些新类型。 如果要将新的数据类型导入到 SQL Server 早期版本中,则必须以早期的 bcp 客户端可读的格式存储该数据类型。 下表总结了如何转换新数据类型以便与早期版本的 SQL Server兼容。
SQL Server 2005 中的新数据类型 | 版本 6x兼容的数据类型 | 版本 70 中兼容的数据类型 | 版本 80 中兼容的数据类型 |
---|---|---|---|
bigint |
decimal |
decimal |
* |
sql_variant |
text |
nvarchar(4000) |
* |
varchar(max) |
text |
text |
text |
nvarchar(max) |
ntext |
ntext |
ntext |
varbinary(max) |
image |
image |
image |
XML | ntext |
ntext |
ntext |
UDT1 | image |
image |
image |
* 此类型受本机支持。
1 UDT 表示用户定义的类型。
使用 -V 80 进行导出
使用 -V80 开关批量导出数据时,nvarchar(max)
本机模式下的 、、varchar(max)
、varbinary(max)
XML 和 UDT 数据使用 4 字节前缀(如 text
、 image
和 ntext
数据)存储,而不是使用 8 字节前缀(这是 SQL Server 2005 及更高版本的默认值)。
复制日期值
bcp 将使用 ODBC 大容量复制 API。 因此,为了将日期值导入到 SQL Server中, bcp 使用了 ODBC 日期格式 (yyyy-mm-dd hh:mm:ss[ .f... ])。
bcp 命令使用 和 smalldatetime
值的 ODBC 默认格式导出字符格式datetime
数据文件。 例如,包含日期 12 Aug 1998
的 datetime
列将以字符串 1998-08-12 00:00:00.000
的形式大容量复制到数据文件中。
重要
使用 bcp 将数据smalldatetime
导入字段时,请确保秒的值为 00.000;否则操作将失败。 smalldatetime
数据类型仅支持最接近的分钟值。 BULK INSERT 和 INSERT ...SELECT * FROM OPENROWSET(BULK...) 在这种情况下不会失败,但会截断秒值。
Related Tasks
使用数据格式进行大容量导入或大容量导出
另请参阅
bcp 实用工具
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
数据类型 (Transact-SQL)
SQL Server 数据库引擎的后向兼容性
CAST 和 CONVERT (Transact-SQL)