Использование BCP для импорта данных в SQL Server с сохранением акцентов, азиатских символов и т. Д. - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь импортировать дамп данных PostgreSQL в SQL Server, используя bcp.Я написал сценарий Python для переключения разделителей на '^' и устранения других неправильных форматов, но не могу найти правильные параметры, чтобы сохранить форматирование Юникода для строк при импорте в SQL Server.

В Python, еслиЯ распечатываю строки, которые вызывают у меня проблемы, строка выглядит так с модулем csv:

['12', '\xe4\xb8\x89\xe5\x8e\x9f \xe3\x81\x95\xe3\x81\xa8\xe5\xbf\x97']

Таблица базы данных имеет только 2 столбца: один integer, один varchar.

Мое утверждение (упрощенное) для создания таблицы только:

CREATE TABLE [dbo].[example](
    [ID] [int] NOT NULL,
    [Comment] [nvarchar](max)
    )

И чтобы запустить bcp, я использую эту строку:

c:\>bcp dbo.example in fileinput -S servername -T -t^^ -c

Это успешноимпортирует около миллиона строк, но все мои акцентированные символы разбиты.

Например, «Böhm, Rüdiger» превращается в «B + ¦hm, R ++ diger».У кого-нибудь есть опыт, как правильно установить переключатели или другие подсказки с помощью bcp?

Редактировать : varchar переключен на nvarchar, но это не решает проблему.Эти выходные данные в Python (чтение с модулем CSV):

['62', 'B\xc3\xb6hm, R\xc3\xbcdiger']

отображается как это в SSMS из целевой БД (разделители соответствуют согласованности):

select * from dbo.example where id = 62
62;"B├╢hm, R├╝diger"

где в pgAdmin,используя оригинальную БД, у меня это:

62;"Böhm, Rüdiger"

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Возможно, вам потребуется изменить команду BCP для поддержки широких наборов символов (обратите внимание на использование -w вместо ключа -c)

bcp dbo.example in fileinput -S servername -T -t^^ -w

Справочник по документации BCP

См. Также http://msdn.microsoft.com/en-us/library/ms188289.aspx

0 голосов
/ 10 февраля 2012

Если вам нужно сохранить Unicode, измените varchar на nvarchar ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...