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

Откуда: Киев
Сообщений: 70
Коллеги,
Нужен ваш совет в отношении проблемы которую я пытаюсь решить почти сутки - BULK INSERT записей из файла разделенных запятыми. Проблема в том что поле Description содержит текст, в котором много запятых и получается что этот знак нельзя использовать в качестве разделителя. Двойные кавычки в примере ниже даны только для примера (хотя если расширение файла переименовать в csv - в екселе колонки отображаются как нужно). Из разных источников в нете я узнал что csv формат сиквел не воспринимает в принципе (т.е. так как это делает эксель к примеру), для сиквела этот формат вообще не приемлим. Как сделать по-другому я не нашел. Файл огромный, порядка 500к строк и вставлять их инсертом не вариант.

BULK INSERT [dbo].[Jobs]
FROM 'C:\_TEMP\Jobs_Insert.csv'
WITH (KEEPIDENTITY, FIELDTERMINATOR = ',', FIRSTROW = 2, ROWTERMINATOR = '\n', KEEPNULLS);


Id, Code, Description, CategoryId, CreatorApplicationUserId, LastModifierApplicationUserId, LastModificationTime, DeleterApplicationUserId, DeletionTime, Deleted, CreationTime, DivisionId, GroupId
1,1061010,"Researches, plans, designs, and administers building projects for clients",1,,,,,,,2017-11-01,1,1
2,1023010,"Structures, such as ships, barges, tugs, dredges and submarines",1,,,,,,,2017-11-01,1,1
2 ноя 17, 17:48    [20922678]     Ответить | Цитировать Сообщить модератору
 Re: BULK INSERT текст с запятыми  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Allaire,

либо использовать ssis либо грузить все как ону строку, а потом обрабатывать
2 ноя 17, 17:53    [20922691]     Ответить | Цитировать Сообщить модератору
 Re: BULK INSERT текст с запятыми  [new]
Allaire
Member

Откуда: Киев
Сообщений: 70
В общем, поковырявшись еще в нете, нашел статью где предлагается использовать нестандартные символы в качестве разделителя (как раз для таких случаев). Я решил использовать пайп (|). Оставалось преобразовать файл. Т.к. файл открывается нормально (как csv) в екселе, я заменил разделитель в региональных настройках, пересохранил файл и вуаля. Вся грязная работа по замене разделителся была сделана екселем, хотя в статье предлагается и другой способ, как то power-shell скрипт. В любом случае, данные успешно загружены в базу. Спасибо!

Оригинал статьи: http://www.dataadventure.com/blog/database/another-way-of-loading-csv-files-into-mssql/
2 ноя 17, 19:06    [20922897]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить