Самый быстрый способ переноса данных таблицы Excel в SQL 2008R2

Кто-нибудь знает самый быстрый способ получить данные из таблицы Excel (массив VBA) в таблицу на SQL 2008 без использования внешняя утилита (т.е. bcp)? Имейте в виду, что мои наборы данных обычно состоят из 6500-15000 строк и примерно 150-250 столбцов; и я в конечном итоге передаю около 20-150 из них во время автоматического пакетного сценария VBA.

Я испробовал несколько методов переноса больших объемов данных из таблицы Excel (VBA) в SQL 2008.Я перечислил их ниже:

Метод 1. Передать таблицу в массив VBA и отправить в хранимую процедуру (ADO) -- Отправка в SQL выполняется МЕДЛЕННО

Метод 2. Создайте отключенный набор записей, загрузите его, затем синхронизируйте. -- Отправка в SQL ОЧЕНЬ МЕДЛЕННО

Способ 3. Поместите таблицу в массив VBA, выполните цикл по массиву и конкатенацию (используя разделители), затем отправьте в хранимую процедуру. -- Отправка в SQL МЕДЛЕННАЯ, но быстрее, чем метод 1 или 2.

Метод 4. Поместите таблицу в массив VBA, выполните цикл по массиву и конкатенацию (используя разделители), затем поместите каждую строку с помощью команды набора записей ADO .addnew. --Отправка в SQL очень БЫСТРО (примерно в 20 раз быстрее, чем методы 1-3), но теперь мне нужно будет разделить эти данные с помощью отдельной процедуры, что значительно увеличит время ожидания.

Способ 5. Поместить таблицу в массив VBA, сериализовать в XML, отправить в хранимую процедуру как VARCHAR и указать XML в хранимой процедуре. --Отправка в SQL НЕВЕРОЯТНО МЕДЛЕННО (примерно в 100 раз медленнее, чем методы 1 или 2)

Я что-то упустил?

9
задан Community 22 September 2017 в 17:44
поделиться