大容量导入或导出的数据格式 -- 本机格式

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

应用场景



当使用不包含任何扩展/双字节字符集 (DBCS) 字符的数据文件在多个 SQL Server 实例之间大容量传输数据时,建议使用本机格式。

 

本机格式保留数据库的本机数据类型。 


本机格式适用于 SQL Server 表之间的高速数据传输。

 

如果使用格式化文件,则源表和目标表不必相同。

 

数据传输分为两个步骤:

1. 将源表中的数据大容量导出到数据文件中

2. 将数据文件中的数据大容量导入到目标表中

 

在相同的表之间使用本机格式避免了在各数据类型与字符格式之间进行不必要的转换,从而节省了时间和空间。

 

但是,若要获得最佳的传输速率,应执行几个有关数据格式的检查。

 

为了防止加载的数据出现问题,请参阅以下限制列表。

 

限制



若要成功导入本机格式的数据,请确保:

 

1. 数据文件是本机格式的文件。

 

2. 目标表必须与数据文件(含有正确的列数、数据类型、长度及 NULL 状态等)兼容,或者您必须使用格式化文件将每一个字段映射到其相应列。

注意

如果从与目标表不匹配的文件中导入数据,那么导入操作可能会成功,但插入到目标表中的数据值很可能是错误的。 这是由于文件中的数据是通过使用目标表的格式来解释的。 因此,任何不匹配都会导致插入错误值。 但是,这样的不匹配决不会导致数据库中出现逻辑或物理不一致。


 

成功的导入操作不会损坏目标表。

 

bcp 如何处理本机格式的数据



本节论述了 bcp 实用工具如何导出和导入本机格式数据的特殊注意事项。

 

1. 非字符数据

bcp 实用工具使用 SQL Server 内部二进制数据格式将表中的非字符数据写入数据文件中。

 

2. char 数据或 varchar 数据

在每个 char 字段或 varchar 字段的开头,bcp 都添加前缀长度。

重要提示

当使用本机模式时,默认情况下,bcp 实用工具先将 SQL Server 中的字符转换为 OEM 字符,然后将这些字符复制到数据文件中。 bcp 实用工具先将数据文件中的字符转换为 ANSI 字符,然后将这些字符大容量导入到 SQL Server 表中。 在执行这些转换过程中,可能丢失扩展字符数据。 对于扩展字符,请使用 Unicode 本机格式或指定代码页。


 

3. sql_variant 数据

如果 sql_variant 数据以 SQLVARIANT 存储在本机格式数据文件中,则数据会保留其所有特征。 记录每个数据值的数据类型的元数据与数据值一起存储。 此元数据用于在目标 sql_variant 列中重新创建具有相同数据类型的数据值。

 

如果目标列的数据类型不是 sql_variant,则每个数据值将按照隐式数据转换的一般规则转换为目标列的数据类型。 如果在数据转换过程中出现错误,则回滚当前批。 在 sql_variant 列之间传输的任何 char 值和 varchar 值都可能存在代码页转换问题。

 

本机格式的命令选项



您可以使用 bcp、BULK INSERT 或 INSERT ... SELECT * FROM OPENROWSET(BULK...) 将本机格式数据导入到表中。 对于 bcp 命令或 BULK INSERT 语句,您可以在命令行中指定数据格式。 对于 INSERT ... SELECT * FROM OPENROWSET(BULK...) 语句,您必须在格式化文件中指定数据格式。

 

下列命令行选项支持本机格式:

命令

选项

说明

bcp

-n

使 bcp 实用工具使用本机数据类型的数据。

BULK INSERT

DATAFILETYPE ='native'

使用本机数据类型或宽本机数据类型的数据。 注意,如果格式化文件指定了数据类型,则不需要 DATAFILETYPE。


若要将本机 (-n) 数据加载到与早期版本的 SQL Server 客户端相兼容的格式,请使用 -V 开关。

 

参考:

https://msdn.microsoft.com/zh-cn/library/ms191232.aspx

















本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1628097,如需转载请自行联系原作者


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
8月前
后端返回base64格式数据转excel格式文件并下载
后端返回base64格式数据转excel格式文件并下载
82 0
|
1月前
|
Shell Linux 开发工具
linuxShell_格式和工具
linuxShell_格式和工具
|
7月前
|
存储
按格式读写文件存取学生信息
按格式读写文件存取学生信息
|
前端开发 JavaScript 容器
vue导出excel表格-后端返回blob流文件,前端接收并导出(处理导出以后打开文件损坏问题)
vue导出excel表格-后端返回blob流文件,前端接收并导出(处理导出以后打开文件损坏问题)
716 0
7zip压缩zip格式时文件名支持中文的设置
7zip压缩zip格式时文件名支持中文的设置
82 0
7zip压缩zip格式时文件名支持中文的设置
EMQ
|
SQL JSON 监控
连接格式优化,支持自定义
12月eKuiper团队继续专注于1.8.0版本新功能的开发,重构了外部连接(source/sink)的格式机制,更加清晰地分离了连接、格式和Schema,同时支持了格式的自定义。
EMQ
104 0
连接格式优化,支持自定义
|
存储 安全 Android开发
【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )(二)
【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )(二)
242 0
【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )(二)
|
存储 Android开发 数据格式
【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )(一)
【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )(一)
183 0
【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )(一)
|
数据库
【视频】配置信息管理 的 使用方法(一):数据库文档(Excel)的格式说明
  这个视屏是对数据库文档(Excel)的格式的说明。必须按照这样的格式填写才能被配置信息管理程序所识别。        感谢 svnhost.cn 提供空间,因为园子里只有30M的空间,远远不够用,呵呵。
696 0