Кто-нибудь знает самый быстрый способ получить данные из таблицы Excel (массив VBA) в таблицу на SQL 2008 без с помощью внешней утилиты (например, bcp)? Имейте в виду, что мои наборы данных обычно состоят из 6500-15000 строк и примерно 150-250 столбцов; и я в конечном итоге передаю около 20–150 из них во время автоматического пакетного сценария VBA.
Я пробовал несколько методов для получения больших объемов данных из таблицы Excel (VBA) в SQL 2008. Я перечислил их ниже:
Метод 1. Передать таблицу в массив VBA и отправить в хранимую процедуру (ADO) - отправка в SQL выполняется МЕДЛЕННО.
Способ 2. Создайте отключенный RecordSet, загрузите его, затем синхронизируйте. - Отправка в SQL ОЧЕНЬ МЕДЛЕННАЯ
Метод 3. Поместите таблицу в массив VBA, выполните цикл по массиву и объедините (используя разделители), а затем отправьте в хранимую процедуру. - Отправка в SQL SLOW, но быстрее, чем метод 1 или 2.
Метод 4. Поместите таблицу в массив VBA, выполните цикл по массиву и объедините (используя разделители), затем поместите каждую строку с помощью команды ADO recordset .addnew. - Отправка в SQL очень БЫСТРАЯ (примерно в 20 раз быстрее, чем методы 1-3), но теперь мне нужно будет разделить эти данные с помощью отдельной процедуры, что приведет к значительному увеличению времени ожидания.
Метод 5. Поместите таблицу в массив VBA, сериализуйте в XML, отправьте в хранимую процедуру как VARCHAR и укажите XML в хранимой процедуре. - Отправка в SQL НЕВЕРОЯТНО МЕДЛЕННАЯ (примерно в 100 раз медленнее, чем методы 1 или 2)
Что-то мне не хватает?