|
csv 10гб | ☑ | ||
---|---|---|---|---|
0
tigrandis
28.02.22
✎
14:54
|
всем привет, собственно сабж, файл имеет 150 колонок, и много много строк, средствами 1с файл читает примерно 6-7 часов, есть какой нибудь вариант по шустрее, может библиотека на С или что то похожее,
|
|||
1
Эльниньо
28.02.22
✎
14:55
|
Да что там такого то?!
|
|||
2
Asmody
28.02.22
✎
14:56
|
(0) загрузи его в СУБД какую-нибудь. будет легче
|
|||
3
Garykom
гуру
28.02.22
✎
14:57
|
(0) перегони в dbf
|
|||
4
H A D G E H O G s
28.02.22
✎
14:59
|
(0) Вы криво читаете его 1С-ом, вот и всё.
|
|||
5
Casey1984
28.02.22
✎
15:04
|
(0) Для того чтобы проложить в точку Б, нужно знать где точка А, а вы не можете код привести :-/
|
|||
6
Kassern
28.02.22
✎
15:07
|
интересно, как работать с таким файлом? Если это чисто БД, тогда и переводите в БД, если это какие-то операции для обменов, то бейте на части, грузите кусками, может в несколько потоков.
|
|||
7
VladZ
28.02.22
✎
15:09
|
(0) Попробуй в Excel открыть.
|
|||
8
tigrandis
28.02.22
✎
15:10
|
(1) перепись населения Эстонии.
|
|||
9
VladZ
28.02.22
✎
15:11
|
не получится (7) - грузи в SQL. SQL умеет загружать csv
|
|||
10
tigrandis
28.02.22
✎
15:11
|
(2) к сожалению нет времени, каждый день приходит новый файл, и нужно сравнивать их.
|
|||
11
НЕА123
28.02.22
✎
15:14
|
(10)
может (2) все-таки и есть решение? |
|||
12
Kassern
28.02.22
✎
15:14
|
(10) я так понимаю, львиная доля это не чтение файла, а его обработка?
|
|||
13
tigrandis
28.02.22
✎
15:14
|
(6) сейчас так и происходит, при чтении в цикле покупаем по пакетам и отрабатываем в 50 потоков, но сам цикл при чтении медленный, поэтому хотим читать чем то сторонним.
|
|||
14
Garykom
гуру
28.02.22
✎
15:14
|
(12) скорее всего обработка
|
|||
15
Garykom
гуру
28.02.22
✎
15:15
|
(10) выгружать из 1С данные во внешнюю бд, и юзаеть некий внешний софт относительно 1С
ну или просто почитай уже про многопоточность и фоновые |
|||
16
tigrandis
28.02.22
✎
15:17
|
(14) именно ЧТЕНИЕ, про многопоточность написал выше
|
|||
17
Kassern
28.02.22
✎
15:17
|
кусок кода, хотя бы концепт вашего цикла скиньте, все 150 колонок расписывать не надо
|
|||
18
lodger
28.02.22
✎
15:22
|
(16) ну так отдавай чтение в какой-нибудь комбайн. https://www.sqlshack.com/importing-and-working-with-csv-files-in-sql-server/
|
|||
19
pechkin
28.02.22
✎
15:22
|
Сам цикл
ЧтениеТекста.ПрочитатьСтроку() Сколько выполняется? |
|||
20
tigrandis
28.02.22
✎
15:23
|
(19) порядка 4-5 часов без обработки
|
|||
21
Garykom
гуру
28.02.22
✎
15:24
|
(20) Так блин разбей на много потоков то чтение
|
|||
22
Garykom
гуру
28.02.22
✎
15:24
|
(21)+ Сам файлик поделить на куски перед этим чем то внешним
|
|||
23
Kassern
28.02.22
✎
15:27
|
(20) Что из этого пробовали? https://infostart.ru/1c/articles/1413866/
|
|||
24
Kassern
28.02.22
✎
15:28
|
(23) "Для больших файлов нужно использовать Microsoft.Jet.OLEDB, а не построчное чтение средствами платформы. Понимает даты, числа и многострочные поля. Скорость: ~3000 строк в секунду." из той же ссылки
|
|||
25
Kassern
28.02.22
✎
15:28
|
сколько у вас строк примерно?
|
|||
26
tigrandis
28.02.22
✎
15:30
|
(24) вот, спасибо, я как раз хочу найти самый эффективный способ, у меня примерно 6млн строк
|
|||
27
tigrandis
28.02.22
✎
15:30
|
(23) пока нет, тоже посмотрю
|
|||
28
Kassern
28.02.22
✎
15:32
|
(26) стоило только вбить в яндексе "1с csv чтение" самая первая строчка)
|
|||
29
tigrandis
28.02.22
✎
15:37
|
(28) только собираемся оптимизоровать, поэтому тут написал, чтоб не наступать на все грабли одновременно, хотя ситуация у меня не оч стандартная
|
|||
30
Asmody
28.02.22
✎
15:38
|
||||
31
НЕА123
28.02.22
✎
15:38
|
ПоляСтроки = СтрРазделить(ЧтениеТекста.ПрочитатьСтроку(входнойфайл), ";", Истина)
|
|||
32
zptm
28.02.22
✎
16:58
|
Scripting.FileSystemObject
|
|||
33
Fragster
гуру
28.02.22
✎
17:57
|
так csv нормально через ado читается. ну или внешние источники.
|
|||
34
ДедМорроз
28.02.22
✎
19:42
|
Во-первых,формат колонок имеет большое значение,т.к.даты,например,быстро не прочитаешь.
|
|||
35
ДедМорроз
28.02.22
✎
19:44
|
Быстрее Си ничего нет,но на Си нужно уметь записать.
Разгребание csv на Си получается где-то в районе гигабайт в секунду на нормальной машине. |
|||
36
ДедМорроз
28.02.22
✎
19:46
|
Это,кстати,с учетом приколов с переводом строки в каввчках - без него быстрее.
Vbscript делает тоже самое где-то гигабайт в минуту. |
|||
37
Еврейчик
28.02.22
✎
19:47
|
его же можно разбить на части и почастям считывать. а потом пачкой добавлять записи в бд
|
|||
38
RomanYS
28.02.22
✎
20:05
|
(20) прогнал 7млн строк по 1500 символов :
Время записи 23 сек Время чтения 119 сек Размер файла 14,5 ГБ (15 618 486 907 байт) Кстати почему? &НаСервере Процедура Команда1НаСервере() ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Сообщить(ИмяФайла); Строка = ""; Для инд = 1 По 150 цикл Строка = Строка + "01234596789"; КонецЦикла; Нач = ТекущаяДата(); ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); Для инд = 1 По 7000000 цикл ЗаписьТекста.ЗаписатьСтроку(Строка); КонецЦикла; ЗаписьТекста.Закрыть(); Сообщить("Время записи " +(ТекущаяДата()-Нач) + " сек"); Нач = ТекущаяДата(); ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла); Пока Строка <> Неопределено Цикл Строка = ЧтениеТекста.ПрочитатьСтроку(); КонецЦикла; Сообщить("Время чтения " +(ТекущаяДата()-Нач) + " сек"); КонецПроцедуры |
|||
39
НЕА123
01.03.22
✎
12:31
|
(38)
не замерял. скорее всего >Строка = ЧтениеТекста.ПрочитатьСтроку(); (создание объекта типа строка) |
|||
40
RomanYS
01.03.22
✎
13:04
|
(39) Не понял вопроса. Куда уходят 2 минуты?
В данном контексте это наверное не важно, 2 минуты это не 4-5 часов из (20) |
|||
41
НЕА123
01.03.22
✎
13:11
|
(40)
>В данном контексте это наверное не важно, 2 минуты это не 4-5 часов из (20) полностью согласен. в (39) предположение о том куда уходят 2 минуты. 4-5 часов уходят на неоптимальную обработку строк. я так думаю (с) |
|||
42
RomanYS
01.03.22
✎
13:28
|
(41) скорее всего, но ТС не сознается. А народ пытается решить проблему медленного чтения 1С, которой по факту нет
|
|||
43
Chai Nic
01.03.22
✎
13:42
|
У автора может файл по сети открывается?
|
|||
44
Галахад
гуру
01.03.22
✎
13:52
|
Перепись Эстонии, по определению не должна быстро открываться. :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |