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

Откуда:
Сообщений: 1
Добрый день!

Подскажите, пожалуйста, как можно импортировать данные из CSV файла в SQL Server.

Задача следующая (пошагово):
1. Есть данные в CSV файле, размерностью NxM (файлов несколько и структура может изменяться, то есть заранее неизвестно количество столбцов-заголовков)
2. Нужно их импортировать (без использования Мастера импорта) в еще несуществующую таблицу.

При использовании BULK INSERT необходимо сначала создать таблицу, прописав наименования столбцов, что собственно не нужно, так как столбцов может быть количество M.

Так как в SQL недавно, думаю просто не знаю нужной процедуры.
Буду благодарен, если поможете со скриптом или укажете ссылку на решение подобной проблемы на форуме.

Прикрепляю пример файла CSV, который необходимо загрузить в SQL Server.

Заранее спасибо за помощь.
9 сен 15, 13:55    [18128158]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных в MS SQL Server из CSV файла  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
melakers,

Вам придётся что-то писать вне рамок SQL. могу предложить

1) Тупой метод. Заведите таблицу с заведомо большим числом колонок, чем в вашем файле и загрузите файлы в неё. Потому на уровне БД парзите число колонок и разбирайтесь, что делать дальше.
2) Пишите утилиту или пакет SSIS, который открывает файл, считывает заголовки, парзит первые несколько строк, чтобы понять тип данных и далее грузит файл через bcp используя сгенерённый файл форматирования
3) Подвариант предыдущего пункта: грузите файл в DataTable на C#, динамически формируя колонки, потом используя SqlBulkCopy отправляете эту DataTable на сервер. Если данных много -- можно порционно
9 сен 15, 14:38    [18128430]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных в MS SQL Server из CSV файла  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Вот готовый велосипед для п 3. http://stackoverflow.com/questions/1348712/creating-a-sql-server-table-from-a-c-sharp-datatable
9 сен 15, 14:40    [18128439]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных в MS SQL Server из CSV файла  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
a_voronin, прямо так и придется?

И даже OPENROWSET не поможет?

https://msdn.microsoft.com/en-us/library/ms190312.aspx
9 сен 15, 15:03    [18128564]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных в MS SQL Server из CSV файла  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Minamoto,

Откуда возьмётся formatfile или вы блобом собрались загружать? Или вы знаете синтаксис FROM OPENROWSET ('Разберись, что там внутри, сам')
9 сен 15, 15:12    [18128612]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка данных в MS SQL Server из CSV файла  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
a_voronin
Minamoto,

Откуда возьмётся formatfile или вы блобом собрались загружать? Или вы знаете синтаксис FROM OPENROWSET ('Разберись, что там внутри, сам')


Вот синтакисис:

select *
into #mytable
from openrowset('MSDASQL'
               ,'Driver={Microsoft Access Text Driver (*.txt, *.csv)}'
               ,'select * from C:\tmp\111.csv')


Драйвер указан для 64-хбитной системы, берется из Microsoft Access Database Engine 2010 Redistributable, для 32-хбитной можно использовать "Microsoft Text Driver (*.txt; *.csv)".
9 сен 15, 15:38    [18128797]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить