|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Добрый день! Понимаю, что тема избитая, но всё же. Есть файлы Excel (формат xls, несколько страниц в книге) лежащие на сетевом, общедоступном диске (в рамках одного домена). Файлы каждый день выкладываются новые (маска по дате). Их надо закачать в таблички базы SQL (2016;64 битный). Вот варианты, которые приходят на ум: 1) Использование функции OPENROWSET или с OPENDATASOURCE: 2) Второй способ через Linkedserver. 3) Пакет SSIS в Microsoft Visual Studio 4) Преобразование файла Excel в XML и работа уже с XML (ни разу так не пробовал). Какой вариант используете Вы, какой метод является наиболее надёжным? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 17:21 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed, 5. Внешнее клиентское приложение (про это я и забыл). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 18:11 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed 1) Использование функции OPENROWSET или с OPENDATASOURCE: 2) Второй способ через Linkedserver. 3) Пакет SSIS в Microsoft Visual Studio 4) Преобразование файла Excel в XML и работа уже с XML (ни разу так не пробовал). Но это непросто программировать, формат очень громоздкий. Остальные варианты надёжны до драйверов доступа, с ними могут быть проблемы. При этом проще всё таки SSIS, т.к. достаточно 32 бит драйвера. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 18:28 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed, 6. Сохранение как csv и bulk insert ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 18:36 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Shakill 6. Сохранение как csv и bulk insert И вообще, если вопрос был про "надёжность" метода, то речь о ETL, а запускать из кода кучу Экселей, для преобразования в csv, выглядит как то кустарно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 20:07 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Мы через линкед-сервер работаем чаще всего. Минусы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 20:44 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Когда-то делал такую вещь: в лоб файл не принимался (не помню почему). Делал к нему коннект из АКСЕСС, а из МССКЛ делал коннект к присоединенной таблице АКСЕСС. И это работало очень надежно. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 00:09 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
alexeyvg medoed 1) Использование функции OPENROWSET или с OPENDATASOURCE: 2) Второй способ через Linkedserver. 3) Пакет SSIS в Microsoft Visual Studio 4) Преобразование файла Excel в XML и работа уже с XML (ни разу так не пробовал). Но это непросто программировать, формат очень громоздкий. Остальные варианты надёжны до драйверов доступа, с ними могут быть проблемы. При этом проще всё таки SSIS, т.к. достаточно 32 бит драйвера. Спасибо! Если мы говорим про 3-ий способ. А то что источников несколько и имена файлов динамически могут менять для источника данных SSIS ничего? Я конечно больше с DTS пакетами работал, но мне казалось там на вход статичное имя файлов должно быть, разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 21:36 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Shakill medoed, 6. Сохранение как csv и bulk insert У файла несколько страниц и вставка должны быть, примерно - каждая страница в свой лист. Мне кажется csv в эту схему не укладывается! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 21:38 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Megabyte Мы через линкед-сервер работаем чаще всего. Минусы. Ну по сути это тот же 1-ый метод, вы регаете файла через драйвера , как внешний линкованный сервер и уже потом к нему обращаетесь. Ну и для линковки повышенные права нужны ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 21:42 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed Megabyte Мы через линкед-сервер работаем чаще всего. Минусы. Ну по сути это тот же 1-ый метод, вы регаете файла через драйвера , как внешний линкованный сервер и уже потом к нему обращаетесь. Ну и для линковки повышенные права нужны Внутри проц execute as owner делаем, а самому логину права не даём. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2019, 13:05 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed, Рекомендую использовать https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk . С самостоятельным парзингом xml намучаетесь, а там есть готовая объектная модель. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 09:33 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
a_voronin medoed, Рекомендую использовать https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk . С самостоятельным парзингом xml намучаетесь, а там есть готовая объектная модель. Спасибо за ваш ответ! 1. Я немного не понял, устанавливать Open XML SDK 2.5 for Microsoft Office - надо на сервер или на локальную станцию? 2. Посмотрел примеры, там на VB или C# - обработка кода. Мне же бы хотелось средствами SQL всё сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 10:05 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed А то что источников несколько и имена файлов динамически могут менять для источника данных SSIS ничего? Я конечно больше с DTS пакетами работал, но мне казалось там на вход статичное имя файлов должно быть, разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 11:01 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Gerros medoed А то что источников несколько и имена файлов динамически могут менять для источника данных SSIS ничего? Я конечно больше с DTS пакетами работал, но мне казалось там на вход статичное имя файлов должно быть, разве нет? Конечно, структуры всех файлов должны быть одинаковыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 11:50 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed a_voronin medoed, Рекомендую использовать https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk . С самостоятельным парзингом xml намучаетесь, а там есть готовая объектная модель. Спасибо за ваш ответ! 1. Я немного не понял, устанавливать Open XML SDK 2.5 for Microsoft Office - надо на сервер или на локальную станцию? 2. Посмотрел примеры, там на VB или C# - обработка кода. Мне же бы хотелось средствами SQL всё сделать. Это надо писать код на C#. Разбирать Excel на уровне SQL Server -- идея экстремально бредовая. Как минимум засуньте это в CLR. Но даже это не оптимально. Напишите утилиту и запускайте её джобом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 12:15 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed, мы признали наилучшим вариант загрузчика на С#. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 12:37 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Владислав Колосов medoed, мы признали наилучшим вариант загрузчика на С#. а чем вас EPPlus не устроил? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 13:06 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Alexander Us, не имею представления, я на C# не разрабатываю. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 13:47 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Владислав Колосов medoed, мы признали наилучшим вариант загрузчика на С#. Видите ли, наверное внешняя утилита надежнее всего. Но если загрузок штук 10 разных, то получается куча утилиток, написанных не на t-SQL, но обсуживающих базу. Человек уволится, заболеет, эти удитки надо кому то поддерживать, опять же база перенесена, логин утилит поменяют (залочат) - всё это слетит. SSIS пакет хотя бы наглядно, хранится на самом сервере, визуально можно всё поправить, не владея не особо никакими навыками. Так что я всё же за 3-ий вариант. Ностальгирую по DTS - там вообще даже школьник мог разобраться и всё делалось встроенными средствами! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 14:41 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
medoed Так что я всё же за 3-ий вариант. Ностальгирую по DTS - там вообще даже школьник мог разобраться и всё делалось встроенными средствами! Но в принципе, если писали DTS пакеты, то легко сможете написать и SSIS. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 15:31 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
В зависимости от сложности, но чаще всего так: 1. Код: sql 1. 2. 3. 4. 5.
2. Потом в левой колонке Экселя пишу такой текст Код: sql 1.
3. Копипаста из Экселя в Нотепад++, немного замен по CTRL+H и финальная копипаста в студию + F5 Но можно и через стандартный импорт во временную таблицу и потом уже работать с ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 16:30 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
Valery_B В зависимости от сложности, но чаще всего так: 1. Код: sql 1. 2. 3. 4. 5.
2. Потом в левой колонке Экселя пишу такой текст Код: sql 1.
3. Копипаста из Экселя в Нотепад++, немного замен по CTRL+H и финальная копипаста в студию + F5 Но можно и через стандартный импорт во временную таблицу и потом уже работать с ней. Хм , а если 4-ре файла (каждый день новые, содержат дату в названии), каждый с 5-ю вкладками, на каждой вкладке может быть до 10 тысяч записей. И надо закачивать ежедневно по расписанию, во внерабочее время! Ваш способ не применим, имхо... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 16:45 |
|
Импорт из Excel в таблику Ms Sql
|
|||
---|---|---|---|
#18+
a_voronin medoed, С самостоятельным парзингом xml намучаетесь, а там есть готовая объектная модель. Если экспортировать/импортировать из клиента, то объектная модель есть в OLEDB. Через ADOX.Catalog создается Excel-евский файл со листом в нужном формате. Потом как обычно через ADODB.Connection открываем этот лист и кидаем туда данные. Все это работает без установленного на компе Excel-я. Делал подобное еще на VBA/VB6. В NET-e, естественно, должен быть соответствующий аналог. Формат вывода для csv/txt файлов может задаваться так же файликом schema.ini. Тоже когда-то использовал... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 17:20 |
|
|
start [/forum/topic.php?fid=46&msg=39906363&tid=1686729]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 458ms |
0 / 0 |