Использование BCP для вывода файла в формате ANSI как UTF-8 MSSQL 2012 - PullRequest
0 голосов
/ 14 мая 2018

У меня есть таблица базы данных MSSQL 2012 Server с международными символами. Можно ли как-нибудь скопировать таблицу в файл csv в формате UTF-8 ?

Когда я пытаюсь передать кодовую страницу 65001 команде bcp, она выдает мне ошибку:

SQL 2012 does not support UTF-8. This code page (65001) is supported from SQL  2016.

Error = [Microsoft][SQL Server Native Client 11.0]This version of SQL Server Native Client does not support UTF-8 encoding (code page 65001)

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Кодовая страница 65001 не поддерживает SQL Server 2012 (только для SQL Server 2016 и более поздних версий, Важные версии до SQL Server 2016 (13.x) не поддерживают кодовую страницу 65001 ( Кодировка UTF-8). из https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql). Вы можете использовать страницу Unicode 1200 , а затем вручную преобразовать файл в предпочитаемую кодовую страницу.

Также я рекомендую использовать мою хранимую процедуру usp_bcpTableUnload , в которой есть некоторые улучшения: сохранение имен столбцов таблицы в первой строке, сортировка данных и другие.

0 голосов
/ 14 мая 2018

Найдено решение для запуска после BCP команды Сценарий Powershell:

Просто запустите

PowerShell -Command "Get-Content .\$FILE.txt | Set-Content -Encoding utf8 $FILE.utf8.txt "
...