Импорт Windows-Ansi DBF в SQL Server теряет некоторые символьные данные - PullRequest
1 голос
/ 10 февраля 2012

У меня есть файл DBF, который закодирован как Windows-ANSI (кодовая страница Windows 1252).Я использую драйвер ODBC для импорта этого файла в виде таблицы в базу данных SQL Server.Когда я теряю некоторую информацию о символах.

Сначала, чтобы убедиться, что файл DBF был закодирован, как и ожидалось, я открыл файл с помощью шестнадцатеричного редактора и искал соответствующий символ.Это «маленькая буква» на кодовой странице 1252, и она была сохранена в файле размером 0x95, поэтому, по крайней мере, для этого символа кодировка выглядит так, как ожидалось.

Я выполнил поиск и нашел кого-тосказав, что импорт в nvarchar в отличие от столбца varchar будет иметь значение, поэтому, когда я выполнял импорт, я повторно сопоставил столбец, содержащий проблемный символ, с nvarchar.

База данных, в которую он импортирован, имеетсопоставление «SQL_Latin1_General_CP1_CI_AS» и на странице, которую я прочитал в MSDN, «CP1» указывает, что это должно быть эквивалентно кодовой странице Windows 1252.

Когда я выполняю импорт, символ импортируется как 0xf2 или 0x5625.Я не нашел никаких причин относительно того, почему разные импорты в этот момент.

Кто-нибудь сталкивался с такой проблемой?Что вы сделали, чтобы решить это?Что-нибудь, что я должен изучить или попробовать, что у меня еще нет?

1 Ответ

1 голос
/ 13 февраля 2012

Это похоже на проблему со старым драйвером.Обновление до более нового драйвера DBF устранило проблему с символами, но представило другую проблему.В новых драйверах отсутствует какая-либо «порядковая» информация в схеме столбцов, поэтому ее нельзя использовать с мастером DTS, или, по крайней мере, я не смог найти способ сделать это.Драйверы FoxPro OLEDB работали без нареканий.После установки они отображаются в качестве источника данных в мастере DTS и могут использоваться для непосредственного импорта.Это исправило проблему с моим персонажем, и я смог выполнить импорт.

...