powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проектирование механизма импорта данных в БД
37 сообщений из 37, показаны все 2 страниц
Проектирование механизма импорта данных в БД
    #39789947
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех приветсвую. Я новичок в работе с базами данных, поэтому заранее прошу меня извинить за глупые вопросы. Встала задача проектирования БД и реализации механизма импорта данных.

Суть проблемы заключается в следующем: необходимо импортировать неструктурированные данные из Excel в несколько таблиц на Sql Server.

Импорт будет производится путем запуска приложения на VBA.
Приложение одновременно будет и записывать данные и формировать из уже записанных данных отчёт.

Объем загружаемых данных не больше 10000 строк за 1 запуск приложения. Одновременно работать с базой могут работать до 10 пользователей.

Сейчас я сделал реализацию несколькими способами:

1) На сервере создана таблица для импорта данных с нужными форматами, но без ключей. Проверка форматов происходит на стороне клиентского приложения , далее идет импорт данных в загрузочную таблицу с указанием @@spid пользователя.
Далее клиентское приложение вызывает хранимую процедуру, в которой вызывается транзакция, которая распределяет данные по таблицам, делая проверки на уникальность ключей. После этого процедура стирает данные из загрузочной таблицы, используя как ключ @@spid пользователя.
В этом подходе меня смущает проблема контроля данных в загрузочной таблице, когда одновременно несколько пользователей будут работать.

2) На стороне приложения создается временная таблица , туда происходит импорт данных , а далее приложением вызывается хранимая процедура, которая ссылается в коде на временную таблицу.
В этом подходе не очень нравится, что в коде необходимо формировать запрос на создание временной таблицы.

- Подскажите имеют ли предложенные мною реализации право на жизнь и какие могут быть узкие места в этом случае?
- Прекрасно понимаю, что каждый бизнес-кейс уникален, но все же, как технически лучше реализовывать механизм распределения данных по таблицам?
- Лучше делать это на стороне клиентского приложения или же на стороне сервера?
Буду рад любой помощи.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790038
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89,

2-й вариант лучше, ИМХО.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790056
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89Суть проблемы заключается в следующем: необходимо импортировать неструктурированные данные из Excel в несколько таблиц на Sql Server.

Открою тебе страшную тайну: "импортировать неструктурированные данные" невозможно.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790065
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoStarDestroyer89,

2-й вариант лучше, ИМХО.

Это в вас императивный программист не убит. Привет GoTo.

Сервер - лучше.
Хотя бы потому, что если что-то пошло не так - не надо бежать к пользователю - можно осмотреть прямо на сервере.
Более того "проверка форматов" тоже должна быть на сервере. Грузить туда следует "необработанные данные."
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790072
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89На стороне приложения создается временная таблица , туда происходит импорт данных , а далее приложением вызывается хранимая процедура, которая ссылается в коде на временную таблицу.Не понял... временная таблица на клиенте - это в Экселе, что ли?

StarDestroyer89В этом подходе меня смущает проблема контроля данных в загрузочной таблице, когда одновременно несколько пользователей будут работать.А в чём суть проблемы? Что Вы собираетесь там контролировать?

StarDestroyer89как технически лучше реализовывать механизм распределения данных по таблицам?Работу с неструктурированными или денормализованными исходниками по приведению их во вменяемый формат можно оставить клиенту. А вот работу с данными лучше поручать тому, кто предназначен для работы с данными - т.е. серверу БД.

Т.е. клиент - получает сырые данные, первично "причёсывает" их, получая плоскую денормализованную таблицу с выверенными форматами и словарными значениями, и отдаёт серверу. Сервер - проводит окончательный контроль, формализует словарные данные, после чего раскладывает данные по таблицам с сохранением ссылочной целостности. Данные, не прошедшие контроля, возвращаются клиенту. Который проводит дополнительную обработку (возможно, даже ручную) по "причёсыванию" данных, и либо снова отправляет их серверу, либо присоединяет к следующему пакету.

StarDestroyer89импорт данных в загрузочную таблицу с указанием @@spid пользователя.Соединение может и порваться... что, начинать всё сначала?
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790167
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarDestroyer892) На стороне приложения создается временная таблица , туда происходит импорт данных , а далее приложением вызывается хранимая процедура, которая ссылается в коде на временную таблицу.
В этом подходе не очень нравится, что в коде необходимо формировать запрос на создание временной таблицы.

В зависимости от версии сервера можно и более продвинуто извратиться.
Например, если у вас 2016SP2+ или 2017 сервер, то можно создать в базе memory-optimized table co со стабильностью SCHEMA_ONLY.
А потом взвести на ней безопасность на уровне строк, соответственно чтобы каждый пользователь оперировал своим куском данных.

Ну и дальше - всё, как с темповой таблицей. Но создаешь один раз, и работает быстро.
В MSDN есть пример.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790184
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaStarDestroyer89На стороне приложения создается временная таблица , туда происходит импорт данных , а далее приложением вызывается хранимая процедура, которая ссылается в коде на временную таблицу.Не понял... временная таблица на клиенте - это в Экселе, что ли?

StarDestroyer89В этом подходе меня смущает проблема контроля данных в загрузочной таблице, когда одновременно несколько пользователей будут работать.А в чём суть проблемы? Что Вы собираетесь там контролировать?

StarDestroyer89как технически лучше реализовывать механизм распределения данных по таблицам?Работу с неструктурированными или денормализованными исходниками по приведению их во вменяемый формат можно оставить клиенту. А вот работу с данными лучше поручать тому, кто предназначен для работы с данными - т.е. серверу БД.

Т.е. клиент - получает сырые данные, первично "причёсывает" их, получая плоскую денормализованную таблицу с выверенными форматами и словарными значениями, и отдаёт серверу. Сервер - проводит окончательный контроль, формализует словарные данные, после чего раскладывает данные по таблицам с сохранением ссылочной целостности. Данные, не прошедшие контроля, возвращаются клиенту. Который проводит дополнительную обработку (возможно, даже ручную) по "причёсыванию" данных, и либо снова отправляет их серверу, либо присоединяет к следующему пакету.

StarDestroyer89импорт данных в загрузочную таблицу с указанием @@spid пользователя.Соединение может и порваться... что, начинать всё сначала?


Я просто неверно выразился: временная таблица конечно же создается на сервере, просто скрипт на ее создание я формирую на клиенте - это не очень нравится, так как код получается длинный(в таблице 30 столбцов).

Если соединение разорвется, то пользователь прокрутит VBA-приложение еще раз - тут ничего страшного не случится.
Но тогда в таблице для импорта "зависнут" данные - этот момент нужно как-то контролировать. Очищать всю таблицу я не могу так в этот момент с ней может работать другой пользователь.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790190
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89,

механизм строится на постоянку или на время старта системы?
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790201
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,

процесс импорта будет постоянным .
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790212
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarDestroyer89Очищать всю таблицу я не могу так в этот момент с ней может работать другой пользователь.
С безопасностью на уровне строк - никаких проблем. Очищай на здоровье.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790240
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89,

Сделайте общую папку, в которую 10 человек будут сбрасывать файлы для загрузки.
Создайте пакет Intergation Services, который будет по расписанию смотреть в эту папку и загружать содержимое файлов на сервер.
Идите в кассу за премией.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790292
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaStarDestroyer89импорт данных в загрузочную таблицу с указанием @@spid пользователя.Соединение может и порваться... что, начинать всё сначала?Временная таблица тоже умрет если соединение порвется.
Ему же не вручную 10000 строк грузить. Ну сколько это займет, пару секунд?
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790293
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовStarDestroyer89,

Сделайте общую папку, в которую 10 человек будут сбрасывать файлы для загрузки.
Создайте пакет Intergation Services, который будет по расписанию смотреть в эту папку и загружать содержимое файлов на сервер.
Идите в кассу за премией.Intergation Services отчет тоже нарисует? Ну и пользователям может не понравиться что нет кнопки - "начать загрузку". Кинул файл в папку и сиди жди пока тебе отчет пришлют?
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790294
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89Я просто неверно выразился: временная таблица конечно же создается на сервере, просто скрипт на ее создание я формирую на клиенте - это не очень нравится, так как код получается длинный(в таблице 30 столбцов).Длинный код это реальная проблема, голодающие дети в Африке отдыхают.

С временной таблицей самый некрасивый момент это то что её создание и использование оторваны друг от друга. Создание в коде в приложении, а использование в процедуре. Вот кто нибудь после вас захочет поменять процедуру, а там используется временная таблица, которая неизвестно где создается. Эту процедуру даже отладить будет нереально без исходников приложения. Короче, если пойдете этим путем, то пишите в процедуре коментарии и желательно скрипт для создания временной таблицы.

Ну и конечно нужно убедиться что у вас весь процессинг в одном коннекшене происходит, иначе получите "объект не найден".
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790330
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MindВладислав КолосовStarDestroyer89,

Сделайте общую папку, в которую 10 человек будут сбрасывать файлы для загрузки.
Создайте пакет Intergation Services, который будет по расписанию смотреть в эту папку и загружать содержимое файлов на сервер.
Идите в кассу за премией.Intergation Services отчет тоже нарисует? Ну и пользователям может не понравиться что нет кнопки - "начать загрузку". Кинул файл в папку и сиди жди пока тебе отчет пришлют?

Вы правы в данном случае это не подходит, хотя вариант интересный. Попробую его использовать для другого проекта)
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790332
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MindStarDestroyer89Я просто неверно выразился: временная таблица конечно же создается на сервере, просто скрипт на ее создание я формирую на клиенте - это не очень нравится, так как код получается длинный(в таблице 30 столбцов).Длинный код это реальная проблема, голодающие дети в Африке отдыхают.

С временной таблицей самый некрасивый момент это то что её создание и использование оторваны друг от друга. Создание в коде в приложении, а использование в процедуре. Вот кто нибудь после вас захочет поменять процедуру, а там используется временная таблица, которая неизвестно где создается. Эту процедуру даже отладить будет нереально без исходников приложения. Короче, если пойдете этим путем, то пишите в процедуре коментарии и желательно скрипт для создания временной таблицы.

Ну и конечно нужно убедиться что у вас весь процессинг в одном коннекшене происходит, иначе получите "объект не найден".

Тоесть лучше остановится на первом варианте с постоянной таблицей , сделав изоляцию на уровне строк, как, например, советовал uaggster ?
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790369
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89Сейчас я сделал реализацию несколькими способами:

1) На сервере создана таблица

2) На стороне приложения создается временная таблица

- Подскажите имеют ли предложенные мною реализации право на жизнь и какие могут быть узкие места в этом случае?
Первый вариант какой то костыльный.
Проблема с тьем, что при ошибке данные остаюися, нестрашная, нужно просто придерживаться правила, что данные очищаются до использования, а не после.

Второй вариант - это в принципе классика.
Но действительно, нехорошо, что разделяется управление, создание на клиенте, использование на сервере.

3) Можно ещё использовать появившиеся недавно (с 2008) табличные параметры. Очень хороший вариант, хотя реализован в сиквеле кривовато (нужно делать тип данных).

4) Ещё вариант - клиент кладёт структуру данных в XML, процедура его разбирает. Для ваших мизерных нагрузок очень неплох.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790423
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg3) Можно ещё использовать появившиеся недавно (с 2008) табличные параметры. Очень хороший вариант, хотя реализован в сиквеле кривовато (нужно делать тип данных).

4) Ещё вариант - клиент кладёт структуру данных в XML, процедура его разбирает. Для ваших мизерных нагрузок очень неплох.
Ога.
И еще 100500 преобразований из формата в формат.
Нафига?
Завтра принесут еще "данных", которые в ваш универсальный формат не влазют.
И фсе, приплыли.

Православная загрузка должна состоять из изолированных шагов, которые можно проверять-отлаживать независимо
1. Загрузка данных "как есть" в промежуточную-"временную (не в смысле #)" таблицу.
2. Обработка данных и приведение их к нужному виду.
3. Загрузка в окончательные таблицы.

Строить "универсальную" загрузку - в 101% случаев бессмысленно.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790488
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Православная загрузка должна состоять из изолированных шагов, которые можно проверять-отлаживать независимо
1. Загрузка данных "как есть" в промежуточную-"временную (не в смысле #)" таблицу.
2. Обработка данных и приведение их к нужному виду.
3. Загрузка в окончательные таблицы.С этим я полностью согласен. Самое правильное.

Но бывают маленькие задачки, когда нужно вставить в базу чуть чуть введённых пользователем (например, из выбранного пользователем файлика) данных, их сохранить/обработать, я прямо сразу показатль на экране.
Причём давнных немного и обработка несложная.
Тогда простенькие решения, с передачей данных одним из указанных способов, ИМХО вполне подходят.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790515
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarDestroyer89необходимо импортировать неструктурированные данные из Excel

Объем загружаемых данных не больше 10000 строк за 1 запуск приложения. Одновременно работать с базой могут работать до 10 пользователей.


Меня всегда на этапе формулировки формата и объема данных начинают терзать смутные сомнения.

Я б начал с того, что бы посмотреть, откуда эти 10 пользователей берут по 10000 неструктурированных строк. Может быть эти строки не такие уж неструктурированные и вынимаются из соседней базы или генерятся каким либо софтом или оборудованием соответственно в очень даже структурированном формате.

Не, я конечно допускаю, что есть задачи, когда пользователь ручками набивает 10000 строк, но это очень очень редкая задача имхо.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790533
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaЯ б начал с того, что бы посмотреть, откуда эти 10 пользователей берут по 10000 неструктурированных строк.Обычно это эксель файлы, присылаемые контрагентами, часто случайными, или такими, с которыми дела делаются раз в год.
Там с трудом добиваются, что бы они не передавали данные по факсу, или устно по телефону, куда там интегрировать их систему в свою :-)
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790535
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgPizzaPizzaЯ б начал с того, что бы посмотреть, откуда эти 10 пользователей берут по 10000 неструктурированных строк.Обычно это эксель файлы, присылаемые контрагентами, часто случайными, или такими, с которыми дела делаются раз в год.
Там с трудом добиваются, что бы они не передавали данные по факсу, или устно по телефону, куда там интегрировать их систему в свою :-)бардак автоматизировать невозможно (с)
Не пробовали им сайт сделать, пусть вводят сами?
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790537
StarDestroyer89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizzaStarDestroyer89необходимо импортировать неструктурированные данные из Excel

Объем загружаемых данных не больше 10000 строк за 1 запуск приложения. Одновременно работать с базой могут работать до 10 пользователей.


Меня всегда на этапе формулировки формата и объема данных начинают терзать смутные сомнения.

Я б начал с того, что бы посмотреть, откуда эти 10 пользователей берут по 10000 неструктурированных строк. Может быть эти строки не такие уж неструктурированные и вынимаются из соседней базы или генерятся каким либо софтом или оборудованием соответственно в очень даже структурированном формате.

Не, я конечно допускаю, что есть задачи, когда пользователь ручками набивает 10000 строк, но это очень очень редкая задача имхо.

Вы все правильно подметили: у данных есть конкретный источник данных. Данные берутся из нескольких транзакций ERP системы SAP.
Потом в Excel по определенной логике преобразовываются и далее запускается импорт на SQL, а далее пользователи получают сложный отчет в Excel.

Я знаю, что решение костыльное - в силу определенных бизнес-процессов и политик безопасности я не могу напрямую работать с таблицами SAP, как и настроить регулярную выгрузку на SQL, чтобы сразу строить отчёт.

Поэтому данные уже имеют определенную структуру и форматы - требуется лишь определенная проверка на бизнес-логику.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790624
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxalexeyvgпропущено...
Обычно это эксель файлы, присылаемые контрагентами, часто случайными, или такими, с которыми дела делаются раз в год.
Там с трудом добиваются, что бы они не передавали данные по факсу, или устно по телефону, куда там интегрировать их систему в свою :-)бардак автоматизировать невозможно (с)
Не пробовали им сайт сделать, пусть вводят сами?Угу, ушлые менеджеры нашли заводик, где можно разово взять пиломатериалу для стройки, недорого, а ты им такой "пусть сайтик делают" :-)

Не люблю я эти рассуждения о "бардак автоматизировать".

Это реальный бизнес, это жизнь; как вы дома не окружаете себя качественно спроектированным комплексным решением одного бренда (от фундамента и стен, до рубашек и вилок), причём испольуемое статично от рождения до смерти, так и бизнес работает десятилетиями (да и столетиями тоже), решая возникающие задачи теми методами и средствами, которые на данный момент времени существуют, и которые на данный момент времени кажутся наиболее эффективными.

Понятие "автоматизировать бардак" или "костыли" правильны для одного замкнутого разового решения, действительно, с этим надо бороться, но когда так называют все процессы и активы, это термины неправильные, потому что не бывает полезного и настоящего бизнеса, которые спроектирован "из одного бренда". Если только что то совсем мелкое, одноразовое, типа "кафе-контейнер".

Вот, ТС описал, что есть некая система, большая и сложная, ну и решили в неё не лезть, а сделать для простой задачи выгрузку штатными средствами в Эксель. Вполне разумное решение, конечно, оправданно для определённых ситуаций, в других нужно будет использовать какие то "шины", "коннекторы", лезть напрямую к таблицам и т.д.
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #39790765
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а есть готовый пример, как из vba (именно из vba) из экселя массово закинуть данные в мсскл в обычную таблицу? или ссылку на такой пример
построчный инсерт я делал, хочется массово
...
Рейтинг: 0 / 0
Проектирование механизма импорта данных в БД
    #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
37 сообщений из 37, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проектирование механизма импорта данных в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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