Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

CSV и ADO

CSV и ADO
Я
   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 колонок.

Что и где я деалю не так?
 
 
   tesseract
 
1 - 12.04.18 - 14:33
(0) А зачем ADO привязывать? Через ЧтениеТекста и СтрРазделить быстрее выйдет.

Возможно в файлик попадают символы ВК или ПС, и парсер у ADO сбоит.
   Cool_Profi
 
2 - 12.04.18 - 14:36
(1) Там есть куски с кавычками, руками не хотелось парсить.
Но убедили разработчиков, и они все сомнительные места убрали.
И да, у меня нет СтрРазделить(), у меня древняя версия 1с
   Kigo_Kigo
 
3 - 12.04.18 - 14:39
чет понять не могу , что вы пытаетесь сделать с CSV ?
   tesseract
 
4 - 12.04.18 - 14:40
(3) Распарсить в ТЗ.
   Cool_Profi
 
5 - 12.04.18 - 14:44
(3) Прочитать. Удалить я его мог бы и без АДО.
   Kigo_Kigo
 
6 - 12.04.18 - 15:48
(4) (5)
csv это текстовик с разделителем, распапаси как текст с разделителями, дело в то?
   tesseract
 
7 - 12.04.18 - 15:49
(6) Уже предлагал :-)
   Cool_Profi
 
8 - 12.04.18 - 15:50
(6) Мы не любим читать всю тему?
   VS-1976
 
9 - 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"""
   Cool_Profi
 
10 - 12.04.18 - 16:31
(9) В смысле убрать HDR? пробовал.
Я уже написал парсинг свой... Но ответ был бы полезен, ибо файл может, де-факто, быть по 10-15 тыс строк, хотелось бы разгрузить сервер
 
 Рекламное место пустует
   Сияющий в темноте
 
11 - 12.04.18 - 20:00
адо же поднимает весь файл в память-нифига себе разгрузочка
   Cool_Profi
 
12 - 12.04.18 - 20:04
(11) Ну как тебе сказать. Чтение екселя по адо по сравнению с чтением из екселя - на пару порядков быстрее...
   VS-1976
 
13 - 12.04.18 - 20:18
(10) Provider=Microsoft.Jet.OLEDB.4.0; давно не используется. Попробуй Provider=Microsoft.ACE.OLEDB.12.0;
   shuhard
 
14 - 12.04.18 - 20:34
(11) скорость чтения через adodb на порядок выше,а расход памяти на порядок меньше
   tesseract
 
15 - 12.04.18 - 20:53
(14) Пруфы будут? Во времена 7.7 может так и было, после появления потоков в 8.3  разница в пользу 1С.
   jbond
 
16 - 12.04.18 - 22:16
Господи, спасибо тебе, что в дотнете есть CsvHelper
   jbond
 
17 - 12.04.18 - 22:24
Сегодня успешно распарсил текстовое представление таблицы из жиры

|somefield|somemorefiled|mydate|
|78787|898981|08.04.2018|
|1111|9829857|10.04.2018|
   tesseract
 
18 - 12.04.18 - 23:09
(17) Да на самом деле могу выложить код - просто неясно какая у ТС платформа. Я уже сильно привык к 8.3 с ее потоками и отложенным чтением.
   Сияющий в темноте
 
19 - 13.04.18 - 10:16
Стандартный в 8.х обьект чтение текста не грузит весь текст в память и должен на больших файлах оказаться быстрее адо
в семерке такого обьекта не было,но был стандартный Scripting.TextStream,ко орый также читает построчно
в случае с екселем мы сравниваем работу с длл в нашем процессе и работу с приложением через границу процесса

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует