Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Импорт текстового файла с иероглифами в таблицу даёт знаки ???  [new]
ilyam23
Member

Откуда:
Сообщений: 7
Всем привет!
Есть sql-сервер 2014 sp2. Для импорта файла txt в кодировке utf-8 выполняю код:
BULK INSERT View_Reports
FROM 'totable.txt'
WITH
(
CODEPAGE = '65001',
DATAFILETYPE = 'Char',
FIRSTROW = 2,
FIELDTERMINATOR = '|',
ROWTERMINATOR = '0x0a'
)

В итоге английский и русский импортируется нормально. А иероглифы (китай, корея, япония, арабский) становятся знаками вопроса.
Код:
INSERT INTO dbo.china(name)
VALUES ('(オリジナルアーティスト Русский-English)')

так же даёт знаки вопросов:
(??????????? Русский-English)
Что нужно для правильного импорта иероглифов?
(О! После публикации вопроса и тут вместо иероглифов вопросы появились - прикладываю скрин)

К сообщению приложен файл. Размер - 114Kb
4 мар 17, 11:36    [20262608]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла с иероглифами в таблицу даёт знаки ???  [new]
iljy
Member

Откуда:
Сообщений: 8711
ilyam23,

DDL таблицы покажите. Ну и вы ему явно говорите, что у вас файл неюникодный (DATAFILETYPE = 'Char').
4 мар 17, 11:47    [20262616]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла с иероглифами в таблицу даёт знаки ???  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Надо, чтобы везде было NVARCHAR() и перед всеми строковыми литералами букву N поставить
4 мар 17, 16:50    [20262954]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла с иероглифами в таблицу даёт знаки ???  [new]
ilyam23
Member

Откуда:
Сообщений: 7
По подсказке iap с буквой N - удалось добавить иероглифы. Но не понимаю как можно букву N использовать при Bulk Insert.
По замечанию iljy - если в DATAFILETYPE вместо char применить widechar то строки просто не импортируются. По поводу DDL таблицы - выставил все поля в NVARCHAR(MAX) - не помогло. (Если конечно я правильно понял про DDL)
7 мар 17, 16:27    [20271789]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла с иероглифами в таблицу даёт знаки ???  [new]
iljy
Member

Откуда:
Сообщений: 8711
ilyam23,

а, так он у вас utf-8. Перекодируйте в UTF16.
7 мар 17, 17:55    [20272139]     Ответить | Цитировать Сообщить модератору
 Re: Импорт текстового файла с иероглифами в таблицу даёт знаки ???  [new]
ilyam23
Member

Откуда:
Сообщений: 7
iljy,

Может кому понадобится.
Перекодировал в UTF_16_BE. В Notepad++ показывает кодировку UCS-2 BE BOM.
Используя код:
BULK INSERT View_China
FROM '\\server\share\China_16-7.txt'
WITH
(
DATAFILETYPE = 'widechar',
FIRSTROW = 2,
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n'
);

Select * From dbo.ChinaT


Всёравно вместо иероглифов показывает знаки ??????????.
Чем же это лечится?

(и тут меня осенило - я же view таблицы использую! Посмотрел. Действительно в моём View_China колонки с типом varchar. Создал новое представление таблицы и ГОТОВО - иероглифы появились!!!)
Большое спасибо iljy за верную наводку!
22 мар 17, 12:17    [20320713]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить