将Windows-Ansi DBF导入SQL Server会丢失一些字符数据

时间:2012-02-10 15:10:22

标签: sql-server-2008 encoding collation dbf

我有一个编码为Windows-ANSI的DBF文件(Windows代码页1252)。我使用ODBC驱动程序将此文件作为表导入SQL Server数据库。当我这样做时,我会丢失一些角色信息。

首先,要验证DBF文件是否按预期编码,我使用十六进制编辑器打开文件并搜索有问题的字符。它是代码页1252上的“小子弹”,它存储在文件中的0x95处,因此,至少对于该字符,编码似乎与预期的一样。

我进行了搜索,发现有人说导入到nvarchar而不是varchar列会产生影响,所以当我执行导入时,我将包含有问题字符的列重新映射到nvarchar。

导入的数据库具有“SQL_Latin1_General_CP1_CI_AS”的排序规则,并且从我在MSDN上读取的页面“CP1”表示这应该等同于Windows代码页1252.

当我执行导入时,字符被导入为0xf2或0x5625。我没有找到任何理由为什么不同的进口到这一点。

有没有人遇到过这样的问题?你做了什么来解决它?我应该研究或尝试的任何我还没有的东西?

1 个答案:

答案 0 :(得分:1)

这似乎是旧驱动程序的问题。升级到较新的DBF驱动程序修复了字符问题,但提出了另一个问题。新驱动程序在列模式中缺少任何“序数”信息,因此它不能与DTS向导一起使用,或者至少我找不到这样做的方法。

安装Microsoft Visual FoxPro OLEDB驱动程序完美无瑕。安装完成后,它们会在DTS向导中显示为数据源,并可用于直接导入。这解决了我的角色问题,我能够进行导入。