|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Дано: файл .csv размером в 800+ МБ, 3570 тысяч строк. При помощи .dtsx-пакета он втягивается в MS SQL за 15 минут, включая создание пакета с нуля. Недостаток: использование .dtsx-пакета. Есть вариант с копированием данных из файла в промежуточную базу Access, к которой создан linked server на MS SQL Server-e. После закачки данных в БД Access на сервере запускается хранимая процедура, качающая данные с linked server-a. Требует 40 минут. Недостаток - необходимость создавать linked server на сервере. Если же работать с файлом из VBA с помощью insert into [ODBC; Driver={SQL Server}...].ИмяТаблицы FROM [...] , то тогда процесс грозится растянуться часов на 6. Недостаток: время. Вставка с чтением из файла по 1000 строк и их вставкой в таблицу сервера сожрёт ещё больше времени. Недостаток: время. Вопрос: какие варианты VBA-кода позволят сократить время загрузки данных из .xlsx/.csv файлов на MS SQL Server до времени, всего в 2-3 раза больше, чем время работы с .dtsx пакетом, без создания дополнительных объектов (процедур или linked server-ов) на MS SQL Server-e? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 17:07 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
была такая утилита, если не ошибаюсь - bulk.exe, позволяющая быстро вливать данные в сервер. А с другой стороны - чем не нравится создание пакета, что мешает автоматизировать его создание через vba? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 17:17 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Shocker.Pro, утилиту я вспомнил уже после создания поста; буду завтра пробовать. Что до .dtsx - с ним две проблемы: 1) редактирование .dtsx (пути и имени файла-источника) из VBA - это какие References надо подключить к проекту? И примеры кода, если можно; 2) можно его в VBA запустить на выполнение без появления после этого на экране окна Execute Package Utility с необходимостью нажимать кнопку Execute? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 17:33 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Насколько я понимаю, никто не мешает создавать и выполнять пакеты с помощью TSQL, то есть ни о каком Execute Package Utility речь не идет. Если хочется работать с объектами, возможно, можно все это делать и через SQL-DMO По обоим вопросам лучше консультироваться в разделе форума по MSSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 18:03 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Shocker.Pro, там тоже про утилиту bcp напомнили. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 18:04 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Так ты им не рассказывай про VBA. Для них это просто любой клиент, способный либо, выполнять TSQL-команды, либо работать с DMO. Так что просто задай вопрос, как с помощью TSQL создать нужный пакет. Ну либо пользуй bcp, как там подсказали ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 18:08 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
По опыту, 800мб это не так уж много, непонятно, что там dts 15 минут делает. DaniilSeryi Вставка с чтением из файла по 1000 строк и их вставкой в таблицу сервера сожрёт ещё больше времени.Не верю (с). 3 миллиона строк я из VBA не вставлял, но более 800мб — да. В 15 минут на VBA я готов поверить, самый долгий импорт на моей памяти занимал минут сорок, но там было больше данных, но 6 ЧАСОВ?? Покажите код. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 19:55 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Antonariyнепонятно, что там dts 15 минут делает.DaniilSeryiза 15 минут, включая создание пакета с нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 19:57 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Antonariyно там было больше данных, но 6 ЧАСОВ??кстати, перед таким импортом надо убирать индексы и констрейнты с таблицы, возможно автор этого не делает ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 19:58 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariyно там было больше данных, но 6 ЧАСОВ??кстати, перед таким импортом надо убирать индексы и констрейнты с таблицы, возможно автор этого не делаеткстати да, индексы могут в разы просаживать скорость вставки ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 20:03 |
|
Методы копирования данных из Excel и csv-файлов в MS SQL, сравнимые по скорости с dtsx?
|
|||
---|---|---|---|
#18+
еще можно использовать команду bulk insert языка T-SQL это аналог утилиты bcp ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2014, 08:35 |
|
|
start [/forum/search_topic.php?author=Linux_whirlpool&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 883ms |
total: | 1038ms |
0 / 0 |