Расширение sqlite3_mod_csv или как быстро загрузить огромный файл csv или часть его в 1С 7.7

24.03.18

Интеграция - Внешние источники данных

Расширение к sqlite3 для выполнения sqli запросов к файлам csv и не только.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
sqlite3_mod_csv_20180324
.zip 34,37Kb
3
3
1 SM
Скачать Купить за 1 850 руб.

sqlite3_mod_csv

С csv можно работать и штатными способами 1c.

Но что случится если файл неприлично огромен? Ничего хорошего не будет...

Что делать если требуется не весь файл, а только какая то его часть по условию? Это тоже возможно, но... медленно...

А как насчет чтобы просто "select name from csv where code = 16"? Хочется? Попробуйте расширение sqlite3_mod_csv!

Оно сделано на основании модуля csv из http://www.ch-werner.de/sqliteodbc

Сделано/изменено следующее:

    - добавлены перекодировки текста из CP_OEMCP и CP_ACP;

    - расширены флаги обработки файла;

    - расширен и упрощен режим установки заголовков колонок;

    - сделан пример для 1С 7.7 чтения файла csv с использованием 1sqlite с подключенным модулем csv и отображения результата в ТабличноеПоле 1c++ через Поставщик данных SQLiteDataProvider в двух вариантах: прямое отображение файла csv и отображение через конвертацию файла csv в файл sqlite3, конвертация производится средствами sqlite3 с подключенным модулем;

Подключение расширения:
   SELECT load_extension("sqlite3_mod_csv","sqlite3_extension_init");

Подключение файла csv:
 CREATE VIRTUAL TABLE temp.csv USING csvfile(ИмяФайла,ФлагиОбработки,Кодировка,Разделители,ОграничителиСтроки,ОпределенияКолонок[*]);

Параметры подключения:
    ИмяФайла:
        в формате windows
    ФлагиОбработки:
        0 0x0000 - в файле нет заголовка
                 - имена колонок автоматически c1,c2,c3
                 - в определении колонок только типизация
        1 0x0001 - в файле есть заголовок и он не будет выведен в таблицу
        2 0x0010 - имена колонок из заголовка, если он есть
        4 0x0100 - в определении колонок имя и тип по очереди
    Кодировка:
        1 - CP_ACP
        2 - CP_OEMCP
        3 - CP_UTF8
        прочие значения - CP_UTF8
    Разделители:
        разделитель, по-умолчанию ";"
    ОграничителиСтроки:
        с этим я не очень разбирался, отрезает правую часть строки после второго появления разделителя
    ОпределенияКолонок:
        либо только типы, либо имена и типы по очереди в зависимости от флага обработки

        т.е. либо text,int,text,text либо col1,int,mycol2,text

Пример подключения журнала работы 1С 7.7:

    CREATE VIRTUAL TABLE temp.csv USING csvfile(каталог+'1cv7.mlg',0,1);

    Пример работы в обработке sqlite3_mod_csv.ert (она вложена в архив).

Требования к обработке:

     1С++, formex, 1sqlite с поддержкой загрузки расширений //infostart.ru/public/559826/

P.S. Если на каком то файле csv 1С будет вылетать или виснуть, присылайте его мне вместе со строкой подключения.

 

sqlite3 csv 1c 7.7 импорт конвертация обмен

См. также

Зарплата Внешние источники данных Бухгалтер Расчет 7.7 1С:Зарплата и кадры 7.7 Россия Бухгалтерский учет Абонемент ($m)

Загрузка электронных листов нетрудоспособности (электронных больничных) в ЗиК 7.7 из файлов, например, из СБИС. Не нашел похожих разработок, может, плохо искал, для 1С 7.7 ЗиК.

1 стартмани

14.04.2020    8560    4    hvv2002    2    

2

Внешние источники данных Программист Платформа 1С v7.7 Конфигурации 1cv7 Украина Абонемент ($m)

Рабочий механизм чтения/записи строк в формате JSON для 1С 7.7. Тестировалось на релизах 7.70.25 и 27.

1 стартмани

16.12.2019    22419    61    Volvo32    33    

25

Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Программист Руководитель проекта Платформа 1С v7.7 1С:Комплексная 7.7 Оптовая торговля, дистрибуция, логистика Управленческий учет Абонемент ($m)

Обработки обмена номенклатурой (SKU), дополнительными штрихкодами (AltSku), приемкой (AdvancedShipNotice), подтверждением приема (ASNClosed), выдачей (ShipmentOrder), подтверждением выдачи (CustomerOrderLoaded) для учетной системы 1С 7.7. Здесь выгрузка и загрузка для 1C 7.7.

1 стартмани

21.10.2019    15731    1    ksnik    0    

2

Внешние источники данных Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Обработка для универсальной выгрузки данных из конфигурации 7.7 в JSON. Может быть полезна для задач переноса данных из различных конфигураций в другие конфигурации, для перехода на другие версии 1С, для перехода на 8.3, для переноса данных в другие системы учета, для организации онлайн выгрузки с целью синхронизации разных систем учета. Выгрузка справочников, документов, результатов запросов, остатков по планам счетов.

2 стартмани

09.10.2019    16945    74    Malice    16    

12

Внешние источники данных Оптовая торговля Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v7.7 Россия Управленческий учет Абонемент ($m)

Обработка позволяет реализовать обмен данными между решением SalesWorks и 1c 7.7.

5 стартмани

16.07.2019    15981    6    vv-adm    2    

2

Внешние источники данных Программист Оперативный учет 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Обработка выгружает данные контрагентов и создает два файла: один текстовый со всеми данными, другой формата vcards.vcf для загрузки контактных данных в андроид.

1 стартмани

10.05.2019    9523    4    rid636674    1    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3126 26.03.18 02:33 Сейчас в теме
2. Djelf 253 26.03.18 09:51 Сейчас в теме
(1) Что так сразу капец? Оно у меня 130к строк mlg в секунду пережевывает...
И, кстати, к 7.7 оно не прибито, можно и с консольной sqlite3.exe использовать.
3. CheBurator 3126 27.03.18 01:06 Сейчас в теме
А в пакете внутрях есть все что нужно для установки поставщика данных и прочего по доп.возможностям? для неграмотных?
4. Djelf 253 27.03.18 09:28 Сейчас в теме
Скрин обработки то посмотри. Почти все в примере есть.
5. user591953 27.07.18 12:18 Сейчас в теме
Можно ли как-нибудь открыть .mlg текущего сеанса? А то валится с "unable to open input file". При том FSO.TextStream открывает.
6. user591953 27.07.18 15:21 Сейчас в теме
(5)+ Я так понимаю, что проблема в режиме доступа к файлу, который держит открытым 1С, а sqlite пытается эксклюзивно его заблокировать. Что сильно ограничивает полезность этого мода в части чтения журнала.
7. Djelf 253 27.07.18 16:22 Сейчас в теме
(5) Ага! Русские буквы в пути к названию файла?
Ну не надо русские буквы использовать ни в названиях компов, ни в именах пользователей, ни в паролях - жить будет проще.
Беда с этими русскими буквами...

Забирай исправленную версию https://cloud.mail.ru/public/7AAP/hchUi6umk
Прикрепленные файлы:
sqlite3_mod_csv_20180727.zip
user591953; +1 Ответить
8. alyuev 203 07.02.20 18:18 Сейчас в теме
Привет, Djelf. Выдает ошибку в названии колонки, если содержится символ $, например в названии RATES (US$):

DESTINATION,DESTINATION CODE,EFFECTIVE DATE,RATES (US$),STATUS,BILLING INCREMENT,DELETION DATE,
Abkhazia,7840,19-Mar-2015,0.130000,Same, 1/1,,


Ошибка:

Ошибка выполнения: Неправильная типизация в колонке: RATES (US$)

Строка подключения: 'ИмяФайла',2,3,',','','text'
9. Djelf 253 08.02.20 09:20 Сейчас в теме
Правильно, с точки зрения 1sqlite $ в имени колонки это типизация.
Можно читать без имен колонок, либо задавать из вручную без $.
10. alyuev 203 28.08.20 12:28 Сейчас в теме
Djelf, а можно сделать учет юниксовского переноса строк (LF)? Сейчас принимает только виндовый формат (CRLF).
11. alyuev 203 28.08.20 12:49 Сейчас в теме
И еще - почему-то значения типа "2,000.00" - преобразует в 2.000.00. Т.е. запятую меняет на точку.
12. Djelf 253 02.09.20 15:39 Сейчас в теме
(11) Даже когда поле объявлено как текстовое? оО

(10) Почему нельзя можно, все можно, код то открыт.
Но зачем? За два года - две загрузки, следовательно это не нужно никому.
Мне тоже: сделал, побаловался, закинул в долгий ящик.

P.S. Перепробовал много реализаций vt.csv для sqlite, эта самая адекватная.
Тут еще непонятно как "красиво" передавать все возможные параметры в vt.
А этих параметров можно придумать очень и очень много...
Оставьте свое сообщение