Имя: Пароль:
1C
1С v8
ODBC Запрос на получение примерно 100 строк в csv из 120млн строк. Скорость
, ,
0 Кокос
 
25.04.16
16:57
Есть ксв файл из двух колонок: товар, список аналогов
120млн строк. Насколько быстро/медленно будет выполняться запрос через ODBC к таком файлу если в результате там выйдет гдето 50-100 строк?
У кого-нибудь есть опыт в сабж?
1 ДенисЧ
 
25.04.16
16:58
цсв - это несерьёзно.
Это текстовый файл. Только чтобы его прочитать - уже уйма времени уйдёт
2 asady
 
25.04.16
16:59
(0)всё будет определяться скоростью диска
зачем так мучиться - может запихнуть файл в скульную таблицу?
3 Кокос
 
25.04.16
17:01
(1) зачем читать? создал коннектор в одбс. запихнул туда запрос и прочитал. в 1С придет только результ скуля в 100 строк
4 Кокос
 
25.04.16
17:01
(2) это как?
5 Fragster
 
гуру
25.04.16
17:02
если запрос простой - то примерно равно времени чтения этого файла с диска
6 ДенисЧ
 
25.04.16
17:02
(3) А что, коннектор не будет всё читать?
7 Карупян
 
25.04.16
17:06
лучше всего awk скорость будет равна скорости чтения с диска
8 Кокос
 
25.04.16
17:08
(6) вот хз. мне нужен опытный чел. кто знает.
(5) пробовали? в принципе это быстро должно быть.
(7) что такой awk?
9 ptiz
 
25.04.16
17:11
(0) А откуда взялся такой csv?
10 ДенисЧ
 
25.04.16
17:11
(8) Подумай головой - чтобы получить данные из файла - его надо прочитать...
Индексов же неу
11 Кокос
 
25.04.16
17:12
(9) таблица аналогов автозапчастей
12 Кокос
 
25.04.16
17:13
(10) я читал большие файлы в 90000 строк за 1-3 секунды эксельные. там тоже не было индексов. по идее одбс динамически должен делать индексы при чтении внутри себя.
13 ptiz
 
25.04.16
17:13
(11) Т.е. поиск будет частый. Однозначно - в SQL, и правильно настроить индексы.
14 Drac0
 
25.04.16
17:16
(12) Эмм, а чтобы построить индексы разве не нужно сначала прочитать ВЕСЬ файл, потом индексы все рассчитать и сохранить. Построение индекса - это не волшебство, а дорогая операция.
15 Serginio1
 
25.04.16
17:28
Ну 120 не пробовал, а вот порядка 10 было. Для объединения данных записывались в темповую таблицу порядка 2 минуты

Стр=Стр+"
     |"+СтрСелект+"
     |INTO #TempPrice
     |FROM OPENROWSET( BULK N'"+ФайлСПрайсом+"',
     |FORMATFILE = N'"+ИмяФайлаФрмата+"',";
     Если НачальнаяСтрока>1 Тогда
         Стр=Стр+"
         |FIRSTROW = "+НачальнаяСтрока+","
     КонецЕсли;
     Стр=Стр+"
     |CODEPAGE = '1251'
     |) AS a";
16 Serginio1
 
25.04.16
17:29
Ну а если нужны только первые строки то, чтение текста и

http://catalog.mista.ru/public/371887/
17 Карупян
 
25.04.16
17:38
odbc не делает никаких индексов на csv
18 Карупян
 
25.04.16
17:39
(8) awk это консольная утилита такая
19 Карупян
 
25.04.16
17:39
быстрее awk ничего не будет
20 ptiz
 
25.04.16
17:40
(15) Можешь дать весь код по запроса по тексте через ODBC ?
Сколько ни брал примеров из интернета - ни один не взлетел :(
21 Serginio1
 
25.04.16
17:47
(20) Набери в гуле openrowset csv получишь кучу примеров
22 Кокос
 
25.04.16
19:00
Народ. А темповая таблица в 120млнстрок без 1С-Сервер взлетит?
23 ILM
 
гуру
25.04.16
19:18
(0) Это разовая операция или постоянно будет нужна?
24 Кокос
 
27.04.16
13:57
(23) постоянно. клиент звонит ищет запчасть манагер делает запрос по артикулу и ему выдаются аналоги
25 Amra
 
27.04.16
13:59
(24) Поставь скуль. Загрузи в табличку файл. Поиск будет достаточно быстрым. Файл аналогов же не каждый день обновляется
26 rsv
 
27.04.16
14:11
(25) + 100
27 Карупян
 
27.04.16
14:22
Если постоянная, то скуль однозначно
28 13_Mult
 
27.04.16
14:38
29 13_Mult
 
27.04.16
14:42
30 Кокос
 
27.04.16
15:24
(25) кстати да.. а какую посоветуешь халявную скуль? интербейз какой нибудь?
31 Кокос
 
27.04.16
15:24
(28) 120млн записей в файловую УТ11?
32 Кирпич
 
27.04.16
15:31
(30) MSSQL подойдет
33 Amra
 
27.04.16
15:32
(30) Да, мсскуль экспресс
34 Кокос
 
27.04.16
16:03
(33) 12млн? а файрберд?
35 rsv
 
27.04.16
16:07
(34) В скуле есть уже импорт интерактивный .  Мышкой пощелкаешь  и все.
36 rsv
 
27.04.16
16:09
Express в части юзабилити от  Ent не отличается . Удобно .
37 Кокос
 
27.04.16
18:25
(35) в каком скуле?
38 Кокос
 
27.04.16
18:26
(36) а да. экспресс вроде не ограничивает размер таблиц а только количество пользователей
39 Amra
 
27.04.16
18:27
(38) Ограничивает. Чтото типа 10 Гб и ограничение на использование ресурсов компа
40 Кокос
 
27.04.16
18:30
(39) то бишь придется файрберд юзать
41 Amra
 
27.04.16
18:31
(40) Зачем? Табличка будет меньше 10 Гб, а ресурсы... Там сервак разве? Ресурсы обычного компа экспресс выжрет и не поморшиться
42 Кокос
 
27.04.16
18:33
(41) оыбычный комп. плюс если клиент захочет грузить несколько кросстаблиц от разных поставщиков то еще больше файлы будут
43 FN
 
27.04.16
18:53
(42) можешь под каждого поставщика отдельную базу сделать и все влезет в express
44 H A D G E H O G s
 
27.04.16
18:59
(42) Там от силы гигабайт-два будет.
45 H A D G E H O G s
 
27.04.16
18:59
Давай свой файл, проверим.
46 H A D G E H O G s
 
27.04.16
18:59
Обычный комп ничем не отличается от сервера.
47 ILM
 
гуру
27.04.16
19:52
Файберд потянет вполне. Поставить клиента для него и тягать данные запросом, работать будет очень быстро, я так данные из ПЕРКО за год могу проанализировать по сотруднику или сотрудникам, выборка пара миллисекунд и потом перекачка в 1С ТЗ.
48 Злопчинский
 
28.04.16
00:23
Фигня

Сомнительно что контора, которая может для клиента притаранить любую запчасть из 120 млн - и не может найти спеца для решения этой задачи?

Есть у меня один хомячок в питере на автозапчастях - както на клюшках умудряются клиентов по запчастям при схожей схеме обслуживать
49 4St
 
28.04.16
00:58
Есть еще варианты с NoSQL
http://ruseller.com/lessons.php?rub=37&id=2409
Виндовый вариант взлетает мигом и без установки. Первоначальная заливка будет довольно долгой, если не использовать пакетный режим. А поиск должен быть мгновенный.
50 Serginio1
 
28.04.16
09:59
(48) Таких контор пруд пруди. Работал, знаю.
51 Кокос
 
28.04.16
11:53
(48) твой характер соответствует твоему нику :)
(42) спасибо. Я уже все понял :)) жду заказа теперь
52 Кокос
 
28.04.16
11:53
(49) слишком замрочено. думаю на мсэкспрессе остановлюсь ну или фб :)
53 Gary417
 
28.04.16
11:56
(48) < и не может найти спеца для решения этой задачи? >

они запчасти продают, бабло зарабатывают, а тут ктото кнопочки нажимает, ничего не делает, и требует денег как за полугодовую зарплату? неее...лучше в экселе и ручками.
54 4St
 
28.04.16
12:15
(52) дело вкуса)) как прогрузишь в sql, будь добр, напиши здесь цифры: скорость заливки и скорость поиска. Думаю, почти всем отписавшимся любопытно.
55 Кокос
 
28.04.16
13:01
(54) врядли интересно. заливаться будет один раз в день. не думаю что больше 5 минут. А скорость поиска через ОДБС вообще будет копеечная. там две колонки всего айди запчасти и айди аналога.
56 arsik
 
гуру
28.04.16
13:12
(55) Индексирование еще забыл.
57 Кокос
 
28.04.16
13:18
(56) ну со времен фокспры майкрософт как-то их научился на лету строить... и довольно быстро
58 Serginio1
 
28.04.16
15:59
(55) Тогда заливать лучше через Merge
59 Кокос
 
04.05.16
17:19
(58) это как?
60 Woldemar177
 
04.05.16
17:22
Вопрос на засыпку какая длина строки в байтах?
61 Кокос
 
04.05.16
17:25
Пример
NAME_PARTS;mainART_BRANDS;mainART_CODE_PARTS;TTC_ART_ID;BRANDS;CODE_PARTS;CODE_PARTS_ADVANCED;KIND
"Труба выхлопного газа";"DINEX";="15110";3;"BEDFORD";="91056091";="91056091";3
"Труба выхлопного газа";"DINEX";="15604";4;"BEDFORD";="34613907";="34613907";3
"Средний / конечный глушитель ОГ";"DINEX";="16100";5;"AEC";="T80284";="T8/0284";3
"Средний / конечный глушитель ОГ";"DINEX";="16300";7;"AEC";="TO118TO125";="TO118/TO125";3
"Средний / конечный глушитель ОГ";"DINEX";="16300";7;"TIMAX";="TAE19T";="TAE19T";4
"Средний / конечный глушитель ОГ";"DINEX";="16302";8;"BEDFORD";="T136TO102";="T136/TO102";3
"Средний / конечный глушитель ОГ";"DINEX";="16302";8;"AEC";="T136TO102";="T136/TO102";3
"Средний / конечный глушитель ОГ";"DINEX";="16302";8;"TIMAX";="TAE33X";="TAE33X";4
"Средний / конечный глушитель ОГ";"DINEX";="16306";9;"AEC";="TO120";="TO120";3
"Средний / конечный глушитель ОГ";"DINEX";="16306";9;"TIMAX";="TAE50T";="TAE50T";4
"Средний / конечный глушитель ОГ";"DINEX";="18331";13;"DENNIS";="6555506";="655550/6";3
"Средний / конечный глушитель ОГ";"DINEX";="18334";14;"DENNIS";="416007";="416007";3
"Средний / конечный глушитель ОГ";"DINEX";="18334";14;"GILLET";="460009";="460009";4
"Средний / конечный глушитель ОГ";"DINEX";="18340";15;"DENNIS";="6592151";="659215-1";3
62 Кокос
 
04.05.16
17:26
(60) Открыл в эксель. отформатировалось без проблем в 8 колонок
63 Woldemar177
 
04.05.16
17:28
(61) Переформатировать и залить в SQL секундное дело, и тяни через ODBC. Тянуть ксв через ODBC это извращение как хоккей на траве балет на льду или IP телефония через dial-up
(62) ну или так. в ёкселе есть дивная штука VBA.
64 Кокос
 
04.05.16
17:34
(63) так уже решили. буду ставить мсскульэкспресс или файрберд. думаю первую ибо продукты мс обычно более дружелюбные и расчитаны на тупых. (63) думаю из екселя будет долго. и потом лучше сделать таблицу одного формата и раскидывать ее в скуле из разного типа файлов. тогда код 1с не надо будет менять.
65 H A D G E H O G s
 
04.05.16
17:40
жесть, как она есть
66 Woldemar177
 
04.05.16
17:41
(64) файрберд то зачем??? мсскуль или постгрес тогда уж.
67 g00d
 
04.05.16
17:42
импортируйте в любую нормальную субд и работайте.
68 Кокос
 
04.05.16
17:43
(65) негативный ты человек :))
69 Кокос
 
04.05.16
17:43
(66) мсскуль :)
70 Serginio1
 
05.05.16
14:01
(59) Закачиваешь в темповую таблицу, а затем https://msdn.microsoft.com/ru-ru/library/bb510625(v=sql.120).aspx

Ты можешь подгружать только изменения за определенный период итд
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой