Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Русские буквы при BULK INSERT  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
astranexus
Пытаюсь загрузить данные из файла, но все что не английское кракозябры
Начнём с того, что у вас в файле 8-ми битные "кракозябры", а не юникод-текст
30 ноя 13, 22:07    [15218564]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
Alex Brown
Member [заблокирован]

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

загнать булком в одну таблицу. сделать универсальную SQL функцию на перекодировку в уникод для каждого языка и с ней через SELECT, INSERT загнать уже реальные уникодные символы в другую таблицу.
я делал как то общую функцию на польский и русский в уникод. наверное можно сделать одну функцию для всех языков сразу, или разбить на части.
1 дек 13, 00:03    [15219097]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Alex Brown, вы извращенец!

astranexus, укажите правильну кодировку в настройках: WITH CODEPAGE = 'code_page'
BULK INSERT

А переделка из UTF8 в нужную кодировку (UTF16) делайте командой файловой системы.
или через PowerShell или утилитой iconv.
1 дек 13, 14:36    [15220268]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
автор
Alex Brown, вы извращенец!


да пошел ты
1 дек 13, 20:22    [15221359]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
Mnior
astranexus, укажите правильну кодировку в настройках: WITH CODEPAGE = 'code_page'
Дык у него в каждой строке своя кодировка :-)
1 дек 13, 21:22    [15221583]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
жаль иероглифы не вывести в цитату.. в идеале там те символы что на картинке

К сообщению приложен файл. Размер - 18Kb
1 дек 13, 22:33    [15221792]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
invm
Member

Откуда: Москва
Сообщений: 9344
Исходный файл с помощью iconv перекодируется из UTF-8 в UTF-16 и загружается в таблицу обычным bulk insert с опцией datafiletype = 'widechar'. Что и было предложено ТСу на другом форуме.
Никакие приседания с функциями и пр. совершенно ни к чему.
1 дек 13, 23:54    [15222028]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
alexeyvg
Дык у него в каждой строке своя кодировка :-)
Ок, открыл файл, но там нормально всё видно, в чём проблема?
invm подтверждает что кто-то извращенец. ;)
alexeyvg, может ваш редактор подвёл вас?
2 дек 13, 01:30    [15222409]     Ответить | Цитировать Сообщить модератору
 Re: Русские буквы при BULK INSERT  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
Mnior
alexeyvg, может ваш редактор подвёл вас?
А, точно, это я случайно пересохранил файл перед тем как посмотреть :-)

Тогда действительно самое простое , как сказал invm - конвертить в UTF-16 и импортнуть.
2 дек 13, 10:18    [15223214]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Русские буквы при BULK INSERT  [new]
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 года.
 Re: Русские буквы при BULK INSERT  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 769
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 Ответить