Сразу извиняюсь, что тестирование не по правилам - ночь на дворе, предлагаю просто в качестве идеи.
Выгрузку ниже делал дома, подключившись через интернет к терминальному серверу. Файл "111.xls" лежит у меня дома на диске "С", т.е. файл пишется через интернет.
Код ниже прошел за 59 секунд.
Тут использовались "самодельные" классы-оболочки АДО, но идея проста - берем АДОКомманд и пишем запрос "INSERT INTO".
Единственный момент - видимо, придется до начала процедуры задать имена столбцов обычным способом, а потом уже грузить данные.
CREATE COLUMN я не пербовал, но может и пройдет, зависит от драйвера, если пройдет, будет быстрее.
Код:
static void Job122(Args _args)
{
ADOConnection connection;
ADOCommand command;
int i;
int timeFullStart, timeFullFinish, timeFullTotal;
;
timeFullStart = timenow();
connection = ADODB::establishConnection("C:\\111.xls", false);
command = new ADOCommand();
command.ActiveConnection(connection);
while(i<50000)
{
command.CommandText(strFmt("INSERT INTO [Лист1$] (Field1, Field2) VALUES (100000000000000000000, 20000000000000000)"));
command.Execute();
i++;
}
connection.Close();
timeFullFinish = timenow();
timeFullTotal = timeFullFinish - timeFullStart;
info('Время выполнения, сек');
info(int2str(timeFullTotal));
}