【问题标题】:Importing Windows-Ansi DBF to SQL Server loses some character data将 Windows-Ansi DBF 导入 SQL Server 会丢失一些字符数据
【发布时间】:2012-03-03 01:06:41
【问题描述】:

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

首先,为了验证 DBF 文件是否按预期编码,我使用十六进制编辑器打开文件并搜索相关字符。它是代码页 1252 上的“小子弹”,它存储在文件中的 0x95 处,因此,至少对于那个字符,编码似乎符合预期。

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

它导入的数据库有一个排序规则“SQL_Latin1_General_CP1_CI_AS”,从我在 MSDN 上阅读的页面中,“CP1”表明这应该等同于 windows 代码页 1252。

当我进行导入时,字符被导入为 0xf2 或 0x5625。到目前为止,我还没有找到任何原因说明为什么会有不同的导入。

有没有人遇到过这样的问题?你做了什么来解决它?有什么我应该研究或尝试但我还没有的事情吗?

标签: sql-server-2008 encoding collation dbf


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多