Надо реализовать импорт большого количества(несколько тысяч строк) данных из Excel в MS SQL.
Я написал программу на Delphi, которая через com считывает данные из *.xls и вносит их в MS SQL. Но программа работает медленно. (реализована через позднее связывание).
А именно: медленно работает считывание данных из Excel.
Пока ячейки не пустые, считываем данные и генерируем sql запрос.
Как только попадаются несколько подряд пустых ячеек, цикл прерывается и sql запрос отправляется на сервер.
Вопрос заключается в следующем:
Возможно ли как-нибудь по-другому искать конец документа?
Или по-другому делать импорт данных?
//Формирование SQL запроса
if DM.QuerySQL.Fields.FieldByNumber(1).AsInteger=0 then //Если нет записей в таблице, то выполняем добавление строк
begin
while string(Values[i,j])<>'' do //считываем поля, пока не всретим пустую ячейку
begin
sql.Add('Insert into xlsTempTab'+IntToStr(idBook)+'(id,['+Field+']) values ('+IntToStr(id)+','''+string(Values[i,j])+''')' );
inc(i);//проходим по строкам
inc(id);
FormImport.StatusBar1.Panels[1].Text:='ячейка: '+IntToStr(id);
FormImport.StatusBar1.Repaint;
end;
end
else //В противном случае, выполняем обновление строк
begin
while (string(Values[i,j])<>'') do //считываем поля, пока не всретим пустую ячейку
begin
sql.Add('Update xlsTempTab'+IntToStr(idBook)+' Set '+ '['+Field+']='''+string(Values[i,j])+''' ');
sql.Add('where id=id');// последняя строка запроса
inc(i);//проходим по строкам
inc(id);
FormImport.StatusBar1.Panels[1].Text:='ячейка: '+IntToStr(id);
FormImport.StatusBar1.Repaint;
end;