|
Вопрос про быстродействие | ☑ | ||
---|---|---|---|---|
0
mataranga
08.04.14
✎
09:32
|
Доброе.
Посоветоваться хотелось бы. Есть Excel файл с очень много строк (пусть будет 1 000 000 ). Надо перебрать каждый столбик и сравнить его с данным базы(тобишь действие на сервере). Excel есть только на клиенте. Есть три варианта дальнейших действий. ( на вскидку ) 1. Каждый столбик передать в структуру и отправить на сервер. 2. Все столбики передать в массив структур и отправить на сервер. 3. Создать ТЗ на форме, наполнить данными из excel и уже через РеквизитФормыВЗначение и ЗначениеВРеквизитФОрмы продолжать. Или на прямую обращаться с сервере к представлению ТЗ. Что будет быстрее? |
|||
1
andreymongol82
08.04.14
✎
09:33
|
Внешние источники данных через ADODB подключить
|
|||
2
Drac0
08.04.14
✎
09:34
|
база Скульная?
|
|||
3
Maxus43
08.04.14
✎
09:34
|
>>Что будет быстрее?
перекинуть эксель на сервер во временное хранилище и там подключаться и бегать |
|||
4
wade25
08.04.14
✎
09:35
|
Создать на сервере временную копию файла и там его обработать будет быстрее имхо.
|
|||
5
mataranga
08.04.14
✎
09:37
|
сервер файловый, но предпологается что может быть и SQL где нет excel.
(4) нет excel На сервере (3) вроде тоже Excel надо (1) почитаю |
|||
6
Drac0
08.04.14
✎
09:37
|
В общем, если база скульная, то юзай прямые запросы и OpenDataSource, чтобы читать скулем из файла напрямую без самого Excel. Быстрее нет вариантов в принципе.
|
|||
7
ptiz
08.04.14
✎
09:39
|
Сохранить в DBF в сетевой шаре и работать далее с сервера.
|
|||
8
mataranga
08.04.14
✎
09:44
|
(7) тоже вариант имеет место быть
|
|||
9
Maxus43
08.04.14
✎
09:46
|
(5) не надо ексель, по ADO не надо, тока драйвер, а он стандартный
|
|||
10
Maxus43
08.04.14
✎
09:46
|
(6) для этого не надо скуль
|
|||
11
Drac0
08.04.14
✎
09:47
|
(10) Со скулем можно весь объем работы выполнить в одном запросе :)
|
|||
12
Maxus43
08.04.14
✎
09:49
|
(11) внезапно, из 1с тоже
|
|||
13
Maxus43
08.04.14
✎
09:49
|
типа что-то:
// ACE.OLEDB.12.0 - Для использования данного подключения необходимо дополнительное ПО: // Microsoft Access Database Engine 2010 Redistributable 32/64 bit. СonnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;"""; // Еще один вариант. //СтрокаСоединения = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";"; |
|||
14
Maxus43
08.04.14
✎
09:49
|
короче тут
http://infostart.ru/public/163640/ |
|||
15
_fvadim
08.04.14
✎
09:59
|
1. Читать из excel весь лист в comsafearray - это быстро и сразу в массив.
2. Массив на сервер, там в ТЗ, затем в ВТ. 3. Одним запросом обработать выполнить проверку. |
|||
16
mataranga
08.04.14
✎
10:04
|
(14) ты же говорил без ADO
|
|||
17
Maxus43
08.04.14
✎
10:05
|
(16) >>не надо ексель, по ADO не надо
читай внимательно. Ексель установленный не надо через ADO чтоб подключится... Сложно мысль выразил? |
|||
18
mataranga
08.04.14
✎
10:06
|
Ексель установленный не надо, через ADO чтоб подключится...
ИЛИ Ексель установленный, не надо через ADO чтоб подключится... |
|||
19
Maxus43
08.04.14
✎
10:08
|
(18) В опу установленный эксель, если есть ADO
|
|||
20
Maxus43
08.04.14
✎
10:09
|
2-й вариант у тебя вобще не по русски
|
|||
21
mataranga
08.04.14
✎
10:34
|
(20) но вариант же ;)
|
|||
22
mataranga
08.04.14
✎
10:43
|
Область = Лист.Range(Лист.Cells(2,1), Лист.Cells(КоличествоСтрокExcel,КоличествоСтолбцовExcel));
МассивДанных = Область.Value.Выгрузить(); Тоже ведь как вариант |
|||
23
_fvadim
08.04.14
✎
10:46
|
(22) писал об этом в (15)
|
|||
24
mataranga
08.04.14
✎
10:50
|
вот я из (15) к этому и пришол :) Спасибо!
|
|||
25
_fvadim
08.04.14
✎
11:00
|
(24) есть один неприятный момент.
я как-то пытался прочитать 250 тыс строк в 7 колонок - value.выгрузить() отваливалось с ошибкой. Переписал на чтение блоками по 10 тыс строк с последующим упихиванием в один массив. По скорости осталось примерно так же, работает стабильно.
здесь отбрасывается 1-я строка - предполагается наличие шапки |
|||
26
mataranga
08.04.14
✎
11:16
|
окей учту, спасибо большое
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |