Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
astranexus Member Откуда: Сообщений: 22 |
Добрый день! Пытаюсь загрузить данные из файла, но все что не английское кракозябры Создаю таблицу CREATE TABLE w_ben_gk ( ben_textcode INT, ben_iso CHAR(2), ben_regiso CHAR(2), ben_text NVARCHAR(420) ) выполняю BULK INSERT BULK INSERT w_ben_gk FROM "C:\reverse\bulk.txt" ; GO что не так делаю? К сообщению приложен файл (bulk.txt - 2Kb) cкачать ![]() |
30 ноя 13, 13:01 [15217225] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31782 |
|
||
30 ноя 13, 22:07 [15218564] Ответить | Цитировать Сообщить модератору |
Alex Brown Member [заблокирован] Откуда: Сообщений: 776 |
astranexus, загнать булком в одну таблицу. сделать универсальную SQL функцию на перекодировку в уникод для каждого языка и с ней через SELECT, INSERT загнать уже реальные уникодные символы в другую таблицу. я делал как то общую функцию на польский и русский в уникод. наверное можно сделать одну функцию для всех языков сразу, или разбить на части. |
1 дек 13, 00:03 [15219097] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
Alex Brown, вы извращенец! astranexus, укажите правильну кодировку в настройках: WITH CODEPAGE = 'code_page' BULK INSERT А переделка из UTF8 в нужную кодировку (UTF16) делайте командой файловой системы. или через PowerShell или утилитой iconv. |
1 дек 13, 14:36 [15220268] Ответить | Цитировать Сообщить модератору |
Alex Brown Member [заблокирован] Откуда: Сообщений: 776 |
да пошел ты |
||
1 дек 13, 20:22 [15221359] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31782 |
|
||
1 дек 13, 21:22 [15221583] Ответить | Цитировать Сообщить модератору |
Alex Brown Member [заблокирован] Откуда: Сообщений: 776 |
alexeyvg, я тоже это имел в виду. просто если есть большие обьемы подобной информации по перегону в уникод, или например как у мениа по экспорту всяких неланинских, хвостатых, кириллических языков в ехцел, как альтернативу можно использовать что то в таком духе. попробовал с иероглифами, тоже можно сделать. я использовал здесь сортировку своего сервера. CREATE FUNCTION [dbo].[fn_CharUnicode](@s VARCHAR(4000)) RETURNS NVARCHAR(4000) BEGIN DECLARE @r NVARCHAR(4000) SELECT @r = CAST( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(@s COLLATE Latin1_General_CS_AS, char(221)+char(224)+char(238),NCHAR(UNICODE(N'テ'))) COLLATE Latin1_General_CS_AS, char(253)+char(232)+char(241),NCHAR(UNICODE(N'ス'))) COLLATE Latin1_General_CS_AS, char(221)+char(232)+char(169),NCHAR(UNICODE(N'ト'))) COLLATE Latin1_General_CS_AS, char(221)+char(255)+char(169),NCHAR(UNICODE(N'号'))) COLLATE Latin1_General_CS_AS, char(217)+char(166)+char(234),NCHAR(UNICODE(N'番'))) COLLATE Latin1_General_CS_AS, char(210)+char(226)+char(229),NCHAR(UNICODE(N'테'))) COLLATE Latin1_General_CS_AS, char(210)+char(233)+char(166),NCHAR(UNICODE(N'스'))) COLLATE Latin1_General_CS_AS, char(254)+char(242)+char(172),NCHAR(UNICODE(N'번'))) COLLATE Latin1_General_CS_AS, char(213)+char(197)+char(192),NCHAR(UNICODE(N'호'))) COLLATE Latin1_General_CS_AS, char(210)+char(226)+char(234),NCHAR(UNICODE(N'트'))) COLLATE Latin1_General_CS_AS, CHAR(143),NCHAR(UNICODE(N'ź'))) COLLATE Latin1_General_CS_AS as nvarchar(4000)) RETURN @r END SELECT dbo.fn_CharUnicode(ben_text) from w_ben_gk where ben_iso in ('ja', 'ko') and ben_textcode = 501 К сообщению приложен файл. Размер - 18Kb |
1 дек 13, 22:31 [15221788] Ответить | Цитировать Сообщить модератору |
Alex Brown Member [заблокирован] Откуда: Сообщений: 776 |
жаль иероглифы не вывести в цитату.. в идеале там те символы что на картинке К сообщению приложен файл. Размер - 18Kb |
1 дек 13, 22:33 [15221792] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9644 |
Исходный файл с помощью iconv перекодируется из UTF-8 в UTF-16 и загружается в таблицу обычным bulk insert с опцией datafiletype = 'widechar'. Что и было предложено ТСу на другом форуме. Никакие приседания с функциями и пр. совершенно ни к чему. |
1 дек 13, 23:54 [15222028] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
invm подтверждает что кто-то извращенец. ;) alexeyvg, может ваш редактор подвёл вас? |
||
2 дек 13, 01:30 [15222409] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31782 |
Тогда действительно самое простое , как сказал invm - конвертить в UTF-16 и импортнуть. |
||
2 дек 13, 10:18 [15223214] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
akor Member Откуда: Сообщений: 1 |
Работает с CODEPAGE = 'ACP': BULK INSERT View_for_skkpa1 FROM 'C:\Table1.txt' WITH ( FIELDTERMINATOR = '\t', --- ',' ROWTERMINATOR = '\n', CODEPAGE = 'ACP' ); GO |
21 мар 18, 13:26 [21274262] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
PsyMisha Member Откуда: другая столица Сообщений: 799 |
akor, ... а так же с CODEPAGE = 65001 https://support.microsoft.com/ru-ru/help/3136780/utf-8-encoding-support-for-the-bcp-utility-and-bulk-insert-transact-sq |
27 фев 20, 10:03 [22087942] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |