我有一个编码为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。我没有找到任何理由为什么不同的进口到这一点。
有没有人遇到过这样的问题?你做了什么来解决它?我应该研究或尝试的任何我还没有的东西?
答案 0 :(得分:1)
这似乎是旧驱动程序的问题。升级到较新的DBF驱动程序修复了字符问题,但提出了另一个问题。新驱动程序在列模式中缺少任何“序数”信息,因此它不能与DTS向导一起使用,或者至少我找不到这样做的方法。
安装Microsoft Visual FoxPro OLEDB驱动程序完美无瑕。安装完成后,它们会在DTS向导中显示为数据源,并可用于直接导入。这解决了我的角色问题,我能够进行导入。