Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Русские буквы при BULK INSERT / 15 сообщений из 15, страница 1 из 1
30.11.2013, 13:01
    #38484359
astranexus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
Добрый день!
Пытаюсь загрузить данные из файла, но все что не английское кракозябры

Создаю таблицу
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE w_ben_gk (
ben_textcode INT,
ben_iso CHAR(2),
ben_regiso CHAR(2),
ben_text NVARCHAR(420)
 
)



выполняю BULK INSERT

Код: sql
1.
2.
3.
4.
5.
BULK INSERT w_ben_gk
   FROM "C:\reverse\bulk.txt"
   
   ;
GO



что не так делаю?
...
Рейтинг: 0 / 0
30.11.2013, 22:07
    #38484665
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
astranexusПытаюсь загрузить данные из файла, но все что не английское кракозябрыНачнём с того, что у вас в файле 8-ми битные "кракозябры", а не юникод-текст
...
Рейтинг: 0 / 0
01.12.2013, 00:03
    #38484757
Alex Brown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
astranexus,

загнать булком в одну таблицу. сделать универсальную SQL функцию на перекодировку в уникод для каждого языка и с ней через SELECT, INSERT загнать уже реальные уникодные символы в другую таблицу.
я делал как то общую функцию на польский и русский в уникод. наверное можно сделать одну функцию для всех языков сразу, или разбить на части.
...
Рейтинг: 0 / 0
01.12.2013, 14:36
    #38484982
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
Alex Brown , вы извращенец!

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

А переделка из UTF8 в нужную кодировку (UTF16) делайте командой файловой системы.
или через PowerShell или утилитой iconv.
...
Рейтинг: 0 / 0
01.12.2013, 20:22
    #38485234
Alex Brown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
авторAlex Brown, вы извращенец!

да пошел ты
...
Рейтинг: 0 / 0
01.12.2013, 21:22
    #38485267
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
Mnior astranexus , укажите правильну кодировку в настройках: WITH CODEPAGE = 'code_page'Дык у него в каждой строке своя кодировка :-)
...
Рейтинг: 0 / 0
01.12.2013, 22:31
    #38485309
Alex Brown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
alexeyvg,

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
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
...
Рейтинг: 0 / 0
01.12.2013, 22:33
    #38485311
Alex Brown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
жаль иероглифы не вывести в цитату.. в идеале там те символы что на картинке
...
Рейтинг: 0 / 0
01.12.2013, 23:54
    #38485349
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
Исходный файл с помощью iconv перекодируется из UTF-8 в UTF-16 и загружается в таблицу обычным bulk insert с опцией datafiletype = 'widechar'. Что и было предложено ТСу на другом форуме.
Никакие приседания с функциями и пр. совершенно ни к чему.
...
Рейтинг: 0 / 0
02.12.2013, 01:30
    #38485389
Mnior
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
alexeyvgДык у него в каждой строке своя кодировка :-)Ок, открыл файл, но там нормально всё видно, в чём проблема?
invm подтверждает что кто-то извращенец. ;)
alexeyvg , может ваш редактор подвёл вас?
...
Рейтинг: 0 / 0
02.12.2013, 10:18
    #38485579
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
Mnior alexeyvg , может ваш редактор подвёл вас?А, точно, это я случайно пересохранил файл перед тем как посмотреть :-)

Тогда действительно самое простое , как сказал invm - конвертить в UTF-16 и импортнуть.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
21.03.2018, 13:26
    #39618168
akor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
Работает с CODEPAGE = 'ACP':

BULK INSERT View_for_skkpa1 FROM 'C:\Table1.txt'
WITH (
FIELDTERMINATOR = '\t', --- ','
ROWTERMINATOR = '\n',
CODEPAGE = 'ACP'
);
GO
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.02.2020, 10:03
    #39931469
PsyMisha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
04.06.2021, 13:56
    #40075667
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
akor
Работает с CODEPAGE = 'ACP':

BULK INSERT View_for_skkpa1 FROM 'C:\Table1.txt'
WITH (
FIELDTERMINATOR = '\t', --- ','
ROWTERMINATOR = '\n',
CODEPAGE = 'ACP'
);
GO


Вот когда форум реально помог, заработало с CODEPAGE = 'ACP'
...
Рейтинг: 0 / 0
03.02.2022, 14:22
    #40131486
Unit11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Русские буквы при BULK INSERT
PsyMisha, спасибо, CODEPAGE = 65001 работает,например, когда русский текст из блокнота сохраняешь
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Русские буквы при BULK INSERT / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]