SQL批量复制命令的六个陷阱
上一篇 /
下一篇 2012-07-04 11:40:41
/ 个人分类:数据库
51Testing软件测试网OHS'cRdRC9WD A-n 批量复制工具(BCP)是SQLServer主要的命令行工具之一,使用非常方便,它也是SQL Server导入导出海量数据的方式。但是DBA应注意BCP存在几项限制,本文作者通过自身经历总结了一些主要的问题表现。51Testing软件测试网XpW!}
f}0y6X
51Testing软件测试网1yBx1?k
?L 1、没有对UTF-8的支持51Testing软件测试网%p^2L0yrKHW
!ON9c)P*Sy0
SQL
Server有对Unicode的本地支持,使用过nvarchar和ntext字段类型的任何人都知道。它通过映射每个字符为双字节实体来内部处理
Unicode。如果你只是处理SQL Server实例之间的数据,那么不会有任何问题,因为它们都以相同的方式存储。
:E6j!m'|9wF\0]l+_0-[y}]7u5[
Aq!r*so0 不过,如果你
试图使用BCP从把Unicode导出为UTF-8的数据来源导入数据,那事情就有点复杂了。UTF-8是Unicode的一种子变体,专门设计支持与八
位ASCII文本的向后兼容,所以默认使用八位ASCII编码的网页、电子邮件和其它格式可以用于存储Unicode数据。
x9s,\+oY051Testing软件测试网*K Qt2K\4h/A0u 如果你从UTF-8源导出数据,不要指望对这些数据使用BCP;它一直不支持UTF-8。你必须考虑数据问题,以完整双字节Unicode导出使数据形成可接受格式。具有讽刺意味的是,另一个普通的编码可以通过“-C”开关(ISO 1252,ANSI/微软公司Windows)被BCP接受。不过,就整体而言,你最好把数据导出为双字节Unicode,以保持对BCP的最大兼容性,尤其是如果你处理的数据可能包含与ASCII不兼容的字符。
~/~(ir!w m A0