powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проектирование механизма импорта данных в БД
12 сообщений из 37, страница 2 из 2
Проектирование механизма импорта данных в БД
    #39790824
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxа есть готовый пример, как из vba (именно из vba) из экселя массово закинуть данные в мсскл в обычную таблицу? или ссылку на такой пример
построчный инсерт я делал, хочется массово
я регулярно делаю экспорты из Excel в базу для репортов. Сейчас у нас почти 100 пользователей по всему миру, от Австралии до Аргентины.
По опыту вывел несколько простых правил которые работают и востребованны:

1. Вообще как бы не казалось это устаревшим в 2к19 но экпорт через эксель все еще работает. Новый источник подключается за пару дней. ВСЕ пользователи умеют более мение вставлять в таблички циферки. Можно встроить первичную валидацию данных в VBA сразу же еще до загрузки. Пока вы получите рабающий импорт из SAP - пройдут годы. А ведь нам ехать а не шашечки.

2. Батч загрузка файлов типа из общей папки по расписанию раз в день - удобно для ETL, но плохо для бизнеса. Ждать сутки это убивает и скорость работы и мотивацию пользоваться решением. Решение - псевдо онлайн. Эксель сам лоадит данные в таблицы и ставит семафор - что новые данные доступны. Джоб с расписанием на сервере раз в 5 минут следит за этим и запускает весь ETL.
Результат - нажали кнопку в экселе, через 15 минут данные в отчетах уже видны.

3. Через Эксель реально выгружать что-то объемом до 100К строк. Это покрывает часто 90% потребностей бизнеса. Позволяет запустить проект максимально быстро, а потом добиваться уже нормальных источников по мере их доступности.

4. Дальнейшая эволюция импорта данных - мы убираем маленькие таблицы и справочники из Экселя во WriteBack/MDM. Это еще быстрее, еще удобнее ну и красивее. (Не стыдно и кому показать, в отличии от...)

5. В чем минус экселя для ввода данных - сложности с обновлением структуры и доработками кода VBA. Если у вас 100 пользователей, то как обновить им шаблон и код? Это сложно. Постоянно кто-то будет юзать старую версию, неудобно переносить данные и т.п. Здесь решается пунктом 4 - все что можно вводить через MDM - выносим туда. В итоге в экселе меньше данных, реже надо обновлять.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790825
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxalexeyvgпропущено...
Обычно это эксель файлы, присылаемые контрагентами, часто случайными, или такими, с которыми дела делаются раз в год.
Там с трудом добиваются, что бы они не передавали данные по факсу, или устно по телефону, куда там интегрировать их систему в свою :-)бардак автоматизировать невозможно (с)
Не пробовали им сайт сделать, пусть вводят сами?
что вводят?? простыню из 10000 строк???
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790831
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxа есть готовый пример, как из vba (именно из vba) из экселя массово закинуть данные в мсскл в обычную таблицу? или ссылку на такой пример
построчный инсерт я делал, хочется массово
я делал построчно, но батчами по максимально возможному количеству строк (сколько в 32к vba переменную влезет)
типа:
insert into ...
select 'data','data','data'
union all
select 'data2','data2'.....
commit.

так получается быстрее всего. Можно десятки тысяч строк вполне быстро экспортить
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790855
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakandreymxа есть готовый пример, как из vba (именно из vba) из экселя массово закинуть данные в мсскл в обычную таблицу? или ссылку на такой пример
построчный инсерт я делал, хочется массово
я делал построчно, но батчами по максимально возможному количеству строк (сколько в 32к vba переменную влезет)
типа:
insert into ...
select 'data','data','data'
union all
select 'data2','data2'.....
commit.

так получается быстрее всего. Можно десятки тысяч строк вполне быстро экспортитьтак тоже делал
Только с переменными
Там ограничение - 2000 переменных на запрос
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790917
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxа есть готовый пример, как из vba (именно из vba) из экселя массово закинуть данные в мсскл в обычную таблицу? или ссылку на такой пример
построчный инсерт я делал, хочется массово

Код: sql
1.
BULK INSERT tempdb.dbo.books3 FROM 'C:\Gate\In\Data\a.csv' WITH(DATAFILETYPE='widechar', rowterminator = '\n')
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790976
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не совсем то т.к. тебе из экселя придется сделать csv.
И его придется так же генерить vba. Сомневаюсь, что save as csv получиться.
И по факту что csv сгенерить, что в базу закинуть - сравнимая скорость.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39791052
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan Durakandreymxа есть готовый пример, как из vba (именно из vba) из экселя массово закинуть данные в мсскл в обычную таблицу? или ссылку на такой пример
построчный инсерт я делал, хочется массово
я делал построчно, но батчами по максимально возможному количеству строк (сколько в 32к vba переменную влезет)
типа:
insert into ...
select 'data','data','data'
union all
select 'data2','data2'.....
commit.

так получается быстрее всего. Можно десятки тысяч строк вполне быстро экспортить

У меня код выглядит покомпактнее.

Я набираю строку на загрузку по принципу
insert int MyTable(Column1, Column2,...) Values
(Data1,Data2,.....),
(Data1,Data2,.....),
(Data1,Data2,.....)

у этого метода есть ограничение 1000 строк - я для подстраховки, чтобы переменная не перегрузилась (в таблице 30 столбцов) гружу порциями по 500 строк.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39791088
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakэто не совсем то т.к. тебе из экселя придется сделать csv.
И его придется так же генерить vba. Сомневаюсь, что save as csv получиться.
И по факту что csv сгенерить, что в базу закинуть - сравнимая скорость.

Это будет раз в десять быстрее, чем вся мышиная возня с vba.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39791126
Glebanski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

Построчный инсерт, это как?
Типа =CONCATenate('INSERT INTO MyTable '; A1; ','; B1;','; ; C1;';')
Потом размножить это вниз по воркшиту, copy-paste в MSSQL и вперед?
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39791149
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glebanskiandreymx,

Построчный инсерт, это как?
Типа =CONCATenate('INSERT INTO MyTable '; A1; ','; B1;','; ; C1;';')
Потом размножить это вниз по воркшиту, copy-paste в MSSQL и вперед?не, не так
Это на каждую строку экселя инсерт или вызов хп
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39791405
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно не конвертить в csv и не возиться с vba. Можно подключать excel-файл как линкед-сервер и работать с ним, как с таблицей!
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39792106
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteМожно не конвертить в csv и не возиться с vba. Можно подключать excel-файл как линкед-сервер и работать с ним, как с таблицей!
Эксель у пользователей локально на их ноутах разбросанных по всему миру.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проектирование механизма импорта данных в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]