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

Откуда: Tasm 5.0
Сообщений: 2392
Можно ли заставить bulk insert поддерживать utf-8?

BULK INSERT dbo.Categories
   FROM 'C:\categories\category.csv'
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR='","',
      FORMATFILE = 'C:\categories\bcp.fmt',
      /*CODEPAGE = '65001', ошибка вылетает, типа неподдерживается данная кодовая страница*/
      ROWTERMINATOR = '0x0a');


В bcp.fmt - SQL_Latin1_General_CP1_CI_AS

Всё вставляется нормально, но вместо иероглифов - кракозябры.
10 май 13, 18:46    [14279733]     Ответить | Цитировать Сообщить модератору
 Re: bulk insert не понимает utf-8  [new]
qwerty112
Guest
st_st,

ну да, как бы так и написанно
http://msdn.microsoft.com/ru-ru/library/ms188365.aspx
code_page
Номер кодовой страницы, например 850.

Важно!
SQL Server не поддерживает кодовую страницу 65001 (кодировка UTF-8).

SSIS использовать - не вариант ?
10 май 13, 19:31    [14279871]     Ответить | Цитировать Сообщить модератору
 Re: bulk insert не понимает utf-8  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
utf-8 не поддерживается? Жесть, разработчики походу траву курят.

Ладно, придётся другим путём идти. Оно то вставляется, если бинарно + raw, но только частично, то есть 1-2 иероглифа проходят, остальные битые.

Вобщем задача такова - приходит папка, в ней 1000 подпапок, в каждой подпапке по 3 csv файла в utf-8 с цифрами и иероглифами, каждый из файлов записывается в свою таблицу, то есть в итоге получаем 3 таблицы. Общее количество строк пока не знаю, примерно в районе 10-ти миллионов. Нужно закинуть их в бд. Пользователь в админке сайта жамкает кнопку и пошла заливка.

Собсна хотел программно собрать все пути до файлов и балк инсёртом сразу закинуть, потому как программно парсить каждый файл (разбивать по столбцам, строкам, вырезать кавычки и т.д.) - это надолго процесс затянется.
11 май 13, 09:51    [14280998]     Ответить | Цитировать Сообщить модератору
 Re: bulk insert не понимает utf-8  [new]
qwerty112
Guest
st_st,

так как насчёт SSIS ? он с UTF-8 - справляется, вдруг чо ...

и, ещё можно, через sp_OA ADODB.Stream - переконвертировать все файлы сначала, до BULK-а, в что-то более "варимое"
11 май 13, 16:13    [14281542]     Ответить | Цитировать Сообщить модератору
 Re: bulk insert не понимает utf-8  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
st_st
Собсна хотел программно собрать все пути до файлов и балк инсёртом сразу закинуть, потому как программно парсить каждый файл (разбивать по столбцам, строкам, вырезать кавычки и т.д.) - это надолго процесс затянется.
Программно будет так же по скорости, только надо булк инсёртом заливать прямо из проиложения. Но можно и SSIS пакетом.
11 май 13, 16:23    [14281561]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: bulk insert не понимает utf-8  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
А из-за чего может "TOP" тормозить в некоторые моменты времени?

SELECT TOP 1 id FROM Products WHERE temp=0 


id - int, ключ, автоинкремент, индекс
temp - int, индекс

Вчера весь вечер эти запросы выполнялись по 4 с половиной минуты. Сегодня смотрю, вроде уже нормально работает.

Вчера не выдержал и переделал его на -

SELECT id FROM Products WHERE temp=0 ORDER BY id DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY


и время выполнения упало с 4 минут до менее секунды, то есть начал выполняться мгновенно. В таблице 1.2 млн записей.

Это временный сбой?

Модератор: Не обязательно было задавать свой вопрос в первой попавшейся теме, хоть она и ваша.


Сообщение было отредактировано: 4 окт 14, 11:32
4 окт 14, 07:12    [16659904]     Ответить | Цитировать Сообщить модератору
 Re: bulk insert не понимает utf-8  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Сначала надо смотреть ожидания при выполнении запроса.
Потом надо смотреть план выполнения запроса.
А уже потом делать выводы "что это было".
4 окт 14, 11:31    [16660174]     Ответить | Цитировать Сообщить модератору
 Re: bulk insert не понимает utf-8  [new]
st_st
Member

Откуда: Tasm 5.0
Сообщений: 2392
Гавриленко Сергей Алексеевич
Сначала надо смотреть ожидания при выполнении запроса.
Потом надо смотреть план выполнения запроса.
А уже потом делать выводы "что это было".


Окей, глянем, когда снова повиснет, пока сейчас нормально работает.

p.s. модератору - вопрос простой, из серии "встречался ли кто-то с таким же" и создавать ради него отдельную тему уже не стал.
4 окт 14, 12:26    [16660313]     Ответить | Цитировать Сообщить модератору
 Re: bulk insert не понимает utf-8  [new]
Glory
Member

Откуда:
Сообщений: 104760
st_st
вопрос простой, из серии "встречался ли кто-то с таким же"

С проблемой "вдруг все стало медленно" встречались многие.
Только никто не смог ее решить задним числом, когда все уже закончилось.

Сообщение было отредактировано: 4 окт 14, 13:50
4 окт 14, 13:50    [16660505]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить