|
CSV и ADO | ☑ | ||
---|---|---|---|---|
0
Cool_Profi
12.04.18
✎
11:47
|
Вот есть код
Текст = "[" + ИмяФайла + "] |ColNameHeader=True |Format=Delimited(;) |TextDelimiter=none |CharacterSet=UTF-8 |"; Для ы = 1 По КолПолей Цикл Текст = Текст + "Col" + ы + "=Field" + ы + " Text" + Символы.ПС; КонецЦикла; ТекстДок = Новый ТекстовыйДокумент; ТекстДок.УстановитьТекст(Текст); ТекстДок.Записать(Папка + "Schema.ini"); objRec = Новый COMОбъект("ADODB.Recordset"); strQuery = "SELECT * FROM [" + ИмяФайла + "]"; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""" + Папка + """;Extended Properties=""text;HDR=Yes;FMT=Delimited"""; сообщить("" + strConn); adOpenStatic = 3; adLockOptimistic = 3; adCmdText = 1; Попытка objRec.Open(strQuery, strConn, adOpenStatic, adLockOptimistic, adCmdText); Исключение Сообщить(ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; В результате objRec.Fields.Count == 2 Хотя в файле 15 колонок. Что и где я деалю не так? |
|||
1
tesseract
12.04.18
✎
14:33
|
(0) А зачем ADO привязывать? Через ЧтениеТекста и СтрРазделить быстрее выйдет.
Возможно в файлик попадают символы ВК или ПС, и парсер у ADO сбоит. |
|||
2
Cool_Profi
12.04.18
✎
14:36
|
(1) Там есть куски с кавычками, руками не хотелось парсить.
Но убедили разработчиков, и они все сомнительные места убрали. И да, у меня нет СтрРазделить(), у меня древняя версия 1с |
|||
3
Kigo_Kigo
12.04.18
✎
14:39
|
чет понять не могу , что вы пытаетесь сделать с CSV ?
|
|||
4
tesseract
12.04.18
✎
14:40
|
(3) Распарсить в ТЗ.
|
|||
5
Cool_Profi
12.04.18
✎
14:44
|
(3) Прочитать. Удалить я его мог бы и без АДО.
|
|||
6
Kigo_Kigo
12.04.18
✎
15:48
|
(4) (5)
csv это текстовик с разделителем, распапаси как текст с разделителями, дело в то? |
|||
7
tesseract
12.04.18
✎
15:49
|
(6) Уже предлагал :-)
|
|||
8
Cool_Profi
12.04.18
✎
15:50
|
(6) Мы не любим читать всю тему?
|
|||
9
VS-1976
12.04.18
✎
16:25
|
Попробуй так:
Текст = "[" + ИмяФайла + "] |ColNameHeader=True |Format=Delimited(;) |CharacterSet=UTF-8 |"; Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" + Папка + """;Extended Properties=""Text;FMT=Delimited""" |
|||
10
Cool_Profi
12.04.18
✎
16:31
|
(9) В смысле убрать HDR? пробовал.
Я уже написал парсинг свой... Но ответ был бы полезен, ибо файл может, де-факто, быть по 10-15 тыс строк, хотелось бы разгрузить сервер |
|||
11
Сияющий в темноте
12.04.18
✎
20:00
|
адо же поднимает весь файл в память-нифига себе разгрузочка
|
|||
12
Cool_Profi
12.04.18
✎
20:04
|
(11) Ну как тебе сказать. Чтение екселя по адо по сравнению с чтением из екселя - на пару порядков быстрее...
|
|||
13
VS-1976
12.04.18
✎
20:18
|
(10) Provider=Microsoft.Jet.OLEDB.4.0; давно не используется. Попробуй Provider=Microsoft.ACE.OLEDB.12.0;
|
|||
14
shuhard
12.04.18
✎
20:34
|
(11) скорость чтения через adodb на порядок выше,а расход памяти на порядок меньше
|
|||
15
tesseract
12.04.18
✎
20:53
|
(14) Пруфы будут? Во времена 7.7 может так и было, после появления потоков в 8.3 разница в пользу 1С.
|
|||
16
jbond
12.04.18
✎
22:16
|
Господи, спасибо тебе, что в дотнете есть CsvHelper
|
|||
17
jbond
12.04.18
✎
22:24
|
Сегодня успешно распарсил текстовое представление таблицы из жиры
|somefield|somemorefiled|mydate| |78787|898981|08.04.2018| |1111|9829857|10.04.2018| |
|||
18
tesseract
12.04.18
✎
23:09
|
(17) Да на самом деле могу выложить код - просто неясно какая у ТС платформа. Я уже сильно привык к 8.3 с ее потоками и отложенным чтением.
|
|||
19
Сияющий в темноте
13.04.18
✎
10:16
|
Стандартный в 8.х обьект чтение текста не грузит весь текст в память и должен на больших файлах оказаться быстрее адо
в семерке такого обьекта не было,но был стандартный Scripting.TextStream,ко орый также читает построчно в случае с екселем мы сравниваем работу с длл в нашем процессе и работу с приложением через границу процесса |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |