|
Как "быстро" найти строку в CSV файле? | ☑ | ||
---|---|---|---|---|
0
Dictum
14.09.17
✎
21:35
|
400 000 строк, гружу в таблицу значений, индексирую колонку, использую метод "Найти()", не всегда "находит" (в excel поиск по строке находит, в 1С - нет). В режиме отладки просмотреть ТЗ не выходит, падает 1С. Может порционно как-то работать лучше?
|
|||
1
zmaximka
14.09.17
✎
21:43
|
запросом
|
|||
2
Dictum
14.09.17
✎
21:45
|
(1) выходит медленнее. Пробовал
|
|||
3
RS2017
14.09.17
✎
21:46
|
Если значения уникальные используй соответствие. Значение - ключ, строка - значение.
|
|||
4
VS-1976
14.09.17
✎
22:09
|
с помощью запроса чрез ADO
|
|||
5
Йохохо
14.09.17
✎
22:24
|
а как типизированы колонки?
|
|||
6
mistеr
14.09.17
✎
22:33
|
(0) Найти, а дальше что? Один раз или много?
Задача в целом какая? |
|||
7
Tateossian
14.09.17
✎
23:29
|
(0) Во временную таблицу. Примерно так
ВЫБРАТЬ * ПОМЕСТИТЬ ВременнаяТаблица ИЗ &ТаблицаЗначений ; ВЫБРАТЬ * ИЗ ВременнаяТаблица ГДЕ Поле ПОДОБНО %Строка /////////////////////////////////////// Всю таблицу типизируй простыми типами. Собственно, все. |
|||
8
Dictum
14.09.17
✎
23:33
|
(6) Найти нужно 4000 000 раз
|
|||
9
Dictum
14.09.17
✎
23:34
|
(5) Типизированы как строка
|
|||
10
Dictum
14.09.17
✎
23:34
|
(6) в целом - нужно сопоставить дерево xml к строкам csv
|
|||
11
Йохохо
14.09.17
✎
23:43
|
(9) строка для сравнения на = или подобно? ВРЕГ
|
|||
12
Dictum
14.09.17
✎
23:45
|
(11) в запросе использовал "="
|
|||
13
mistеr
14.09.17
✎
23:47
|
(10) По-моему, лучше проиндексировать дерево XML и сопоставлять в процессе чтения CSV.
|
|||
14
Dictum
14.09.17
✎
23:56
|
(13) я его не составляю, я получаю два таких файла по АПИ (и не спрашивайте что за хреновое АПИ)
|
|||
15
Йохохо
14.09.17
✎
23:58
|
если (3) никак, мб попробовать в вт выбирать через выразить как строка 20 и может убрать индексирование, добавить сортировку
|
|||
16
mistеr
15.09.17
✎
00:00
|
(14) И что?
|
|||
17
Dictum
15.09.17
✎
00:05
|
(16) давай по подробнее про "проиндексировать дерево xml"
|
|||
18
mistеr
15.09.17
✎
00:31
|
Ну, использовать ТЗ с индексами или Соответствие. Туда положить ссылки на узлы.
|
|||
19
Злопчинский
15.09.17
✎
01:09
|
МБ не надо все делать сразу? А искать соответствие только тогда,когда оно становится нужным для дальнейшей работы?
|
|||
20
Fram
15.09.17
✎
01:20
|
(10) а структура xml позволяет его тоже в таблицу загнать? если да, тогда загоняешь оба набора данных в ТЗ, и оба ТЗ в запрос. и крути верти как хочешь
|
|||
21
Tateossian
15.09.17
✎
01:33
|
Кстати, насчет вот этого: "Может порционно как-то работать лучше?" В твоей ситуации, пожалуй, это даже самый лучший вариант: делишь на несколько частей (скажем, на 4, и запускаешь поиск в фоновом задании). Или, вот второй способ, трансформируй в бинарное дерево: через соответствие. Скажем, ключ и значение - это по соответствию "половине" и так до определенной (необходимой) глубины вложенности. А в листе (последнем соответствии) - массив искомых строк.
|
|||
22
VladZ
15.09.17
✎
03:51
|
(8) Зачем так много? Нельзя кэшировать?
Что за инфу грузишь? |
|||
23
breezee
15.09.17
✎
05:40
|
В запросе временную таблицу как писали ранее и индексировать по полям которые встречаются достаточно часто одинаковые
|
|||
24
Dotoshin
15.09.17
✎
07:54
|
(0) Выбери из своей экселевской таблички те строки, которые ТЗ не всегда находит и посмотри отладчиком почему не находит.
Кроме этих строк выбери из таблички несколько предшествующих и несколько последующих. Думаю у тебя какой-то косяк в коде и причина ненахождения может крыться в какой-то конкретной комбинации данных, которая не учтена в твоем алгоритме. |
|||
25
1dvd
15.09.17
✎
07:55
|
может имеет смысл завести РС?
|
|||
26
vadim777
15.09.17
✎
08:18
|
(24) Стандартная причина непоиска в ТЗ - пробелы в начале и конце шаблона для поиска.
|
|||
27
Dotoshin
15.09.17
✎
08:36
|
(26) Еще в экселе могут быть всякие невидимые символы типа неразрывных пробелов и подобной хрени.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |