powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Заменить запись в файл с txt на xlsx
25 сообщений из 150, страница 3 из 6
Заменить запись в файл с txt на xlsx
    #40047493
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Копипастится и попадает в БД? Прикольно вы работаете. LOL.

В этом нет никакого криминала. Табуляция вполне себе символ, никакой угрозы безопасности не несет.

Вставить табуляцию копипастом элементарно благодаря браузерам. Пример:

Выделяем табличку и давим Ctrl+C
1234
Вставляем что получилось Ctrl+V, а получился TSV
Код: plaintext
1.
2.
1	2
3	4


Опубликовав это сообщение я сохранил табуляцию в БД сайта sql.ru :)
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047495
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
crutchmaster
пропущено...

Ровно до тех пор, пока функционал парсера тебя устраивает и пока этот парсер доступен.

Почему он станет недоступен? 6 тысяч CSV-парсеров с исходным кодом почти под все языки. Бери-нехочу.

https://github.com/search?q=csv parser

А хотя-бы и не было. Неужели сам бы не написал? Стандарт описан. Несложный.

Вообще спор не стоит выеденного яйца. Нужно просто использовать качественную библиотеку и не париться.

Давайте лучше поговорим про строки и Юникод. А лучше вообще разработаем свой класс строки. Ведь С++
это язык программирования созданный что бы писать свои классы строк. Я и название придумал: JaString.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047500
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
6 тысяч CSV-парсеров с исходным кодом почти под все языки. Бери-нехочу.

Проблема как раз в продвинутости парсеров, они слишком много нарушений прощают.
Пример вышеописанной проблемы с кавычкой. Сохрани текст ниже в файл CSV и открой его экселем
Код: plaintext
1.
2.
ООО "Рога и копыта;1
"ООО Рога и копыта;2
ООО Рога и копыта;3
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047502
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
petrav
Копипастится и попадает в БД? Прикольно вы работаете. LOL.

В этом нет никакого криминала. Табуляция вполне себе символ, никакой угрозы безопасности не несет.

Вставить табуляцию копипастом элементарно благодаря браузерам. Пример:

Выделяем табличку и давим Ctrl+C
1234

Вставляем что получилось Ctrl+V, а получился TSV
Код: plaintext
1.
2.
1	2
3	4


Опубликовав это сообщение я сохранил табуляцию в БД сайта sql.ru :)
Криминала нет? А потом в БД данные не грузятся? Ну не знаю…

Тут дело в том что в UI должен быть фильтр, аля белый список, который пропускает
только то что можно. Если табы по смыслу поля данных недопустимы, то их там (в БД)
быть не должно — хоть копипасть, хоть чё делай.

Далее… Нужно использовать качественную библиотеку в которой исключены сбои из-за
каких-то нюансов. Всё должно быть экранировано и т.д. Возможно она же (библиотека)
проверяет корректность данных: говорим ей непечатных символов, кроме пробелов, быть
не должно.

И вот ещё что… Если ошибка только в одной строке, то тут возникает нюанс. В зависимости
от того как построен парсер может случиться ситуация когда ошибка внешне станет
незаметной если ошибка только в одной строке. False negative страшная вещь.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047504
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Криминала нет? А потом в БД данные не грузятся? Ну не знаю…

Тут дело в том что в UI должен быть фильтр, аля белый список, который пропускает
только то что можно. Если табы по смылу поля данных недопустимы, то их там (в БД)
быть не должно — хоть копипасть, хоть чё делай.


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

petrav
И вот ещё что… Если ошибка только в одной строке, то тут возникает нюанс. В зависимости
от того как построен парсер может случиться ситуация когда ошибка внешне станет
незаметной если ошибка только в одной строке. False negative страшная вещь.

Ошибка будет незаметна. Лишняя табуляция сдвинула последующие поля в строке
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047505
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Далее… Нужно использовать качественную библиотеку в которой исключены сбои из-за
каких-то нюансов. Всё должно быть экранировано и т.д. Возможно она же (библиотека)
проверяет корректность данных: говорим ей непечатных символов, кроме пробелов, быть
не должно.

Теоретически да, а практически если у тебя десятки-сотни разных источников этих выгрузок, то ты просто устанешь долбить всех писателей чтобы писали правильно, плюнешь и будешь парсить лишь бы парсилось.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047517
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton
6 тысяч CSV-парсеров с исходным кодом почти под все языки. Бери-нехочу.

Проблема как раз в продвинутости парсеров, они слишком много нарушений прощают.
Пример вышеописанной проблемы с кавычкой. Сохрани текст ниже в файл CSV и открой его экселем
Код: plaintext
1.
2.
ООО "Рога и копыта;1
"ООО Рога и копыта;2
ООО Рога и копыта;3

Это философия. Или старый принцип проектирования гетерогенных систем.
Аналогичный текст я читал где-то в сетевых протоколах.

https://tools.ietf.org/html/rfc4180
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Interoperability considerations:

      Due to lack of a single specification, there are considerable
      differences among implementations.  Implementors should "be
      conservative in what you do, be liberal in what you accept from
      others" (RFC 793 [8]) when processing CSV files.  An attempt at a
      common definition can be found in Section 2.
     

Вобщем writer/serializer должен быть максимально строг. А reader/parser/de-serializer - максимально толерантен
к исходным данным.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047519
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Давайте лучше поговорим про строки и Юникод. А лучше вообще разработаем свой класс строки. Ведь С++
это язык программирования созданный что бы писать свои классы строк. Я и название придумал: JaString.

Зачем?
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047520
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотрю в dbForge для MySql
настройки выгрузка-копирование в CSV -
хочешь - в кавычках все,
хочешь - только текст
хочешь - все поля без кавычек
разделитель настраивается
и все нормально работает

надо понять что CSV должен быть настраиваемым, как загрузка так и выгрузка
и TSV - частный случай CSV
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047522
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕМНИП при импорте произвольных пользовательских данных в Excel - есть мастер
импорта который позволяет указать различные границы колонок и сплиттеры.
Есть даже вариант испорта fixed-column. Это тесно связано со старыми форматами
dbms где records имели одинаковый бинарный размер. Щас такое уже не катит
но лет 20 назад можно было взять dbBase/FoxPro датафайл. Отрезать ему голову
и спокойно заимпортировать такой файл в Excel.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047524
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
ЕМНИП при импорте произвольных пользовательских данных в Excel - есть мастер
импорта который позволяет указать различные границы колонок и сплиттеры.
Есть даже вариант испорта fixed-column. Это тесно связано со старыми форматами
dbms где records имели одинаковый бинарный размер. Щас такое уже не катит
но лет 20 назад можно было взять dbBase/FoxPro датафайл. Отрезать ему голову
и спокойно заимпортировать такой файл в Excel.

Записи в DBF фиксированного размера, а числа с датами хранятся в сериализованном виде. Хотя непонятно зачем это делать если эксель и так их открывает.
Но нынче фокус может не пройти, т.к. добавились типы которые хранятся без сериализации (int, datetime)
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047578
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или без dbf. Вот такие позиционные форматы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
$ head GAMES2.LST
FILE      GAME NAME                       COMPANY                       YEAR
1942      1942: The Pacific Air War       MPS                           1994 
A10       A10 TANK KILLER                 DYNAMIX                       1989 
ADIBOU    ADIBOU                          COCTEL VISION                 1993 
AL-QADIM  Al-Qadim: The Genie's Curse     SSI                           1994 
ALEGACY   ALIEN LEGACY                    SIERRA ON-LINE & DYNAMIX      1994 
ANGEL     Angel Wrestling                 GREAP                         1993 
AOE       Aces Over Europe                SIERRA ON-LINE                1993 
ARENA     The Elder Scrolls: Arena        BETHESDA SOFTWORK             1994 
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047593
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, нынче json и строки в utf8 наше всё. Даже MS с этим согласен. Зачем старье ворошить? Его надо хоронить, и чем быстрей, тем лучше.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047596
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наше всё это православный XML и XML схемы.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047597
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Наше всё это православный XML и XML схемы.

MS уже так не считает, это тоже старье
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047598
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton, нынче json и строки в utf8 наше всё. Даже MS с этим согласен. Зачем старье ворошить? Его надо хоронить, и чем быстрей, тем лучше.


(задумчиво)

Если рассматривать json как способ экспорта или импорта данных - то скорее нет, чем да.

При прочих условиях (есть выбор) я-бы выбирал лаконичный способ отдать данные.

JSON (JavaScrip Object notation) создавался для сериализации браузерных объектов и транспорта их в веб-соединениях.
И если у вас есть таблица в 8Гб в сыром виде (это близко к размеру в CSV) то ее представление в JSON
может удвоить объем файла экспорта.

Кто из нас готов согласиться с таким внезапным увеличением накладных расходов? И зачем?
Все равно прогрузить в память такой файл (16 Гб) почти нереально. А если не грузить - то как делать
запросы через JSonPath, JSonifier.

Хотя для REST-сервисов он удобен. Как само-описательный. Все значения посылаемого месседжа
- имеют внятные названия и их видно глазами в tcp-dump например. Даже кодер слабой квалификации
более-менее сносно решает проблемы если ему показать проблемный request/response в этом формате.

Но в Рест-сервисах речь-бы не шла о 8Гб.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047599
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Наше всё это православный XML и XML схемы.

XML был смелым экспериментом в 2000х. У меня на эту тему было куплено несколько восторженных книг.

Есть такая избитая фраза - "практика показала"... Вобщем показала что
некоторые из предметных областей (XHTML, Dbms (Sedna), Oracle(XmlType)) провалились
в части активного использования XML. Или не принесли ожидаемого эффекта. Например при
выборе опции формата REST ответа - большая часть разработчиков и кастомеров выбирают
Json вместо Xml. Это обычный прагматизм и бритва Оккама. Если задача решается вовлечением
меньшего числа сущностей - то ее так и надо решать.

Xml даже для разработчика сложен. Он имеет много уровней семантики. (Как например С++
имеет уровни макро-процессинга и шаблонизации) и разработчики НЕ готовы их ВСЕ использовать.
А не готовы просто потому что эти уровни оказались не нужны. Например XSLT и стандартизация
схемы. И если эти все уровни не задейстовать - тогда возникает вопрос - а зачем вам вообще Xml?
Ради красивого слова? Или угловых скоб?
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047604
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Xml даже для разработчика сложен. Он имеет много уровней семантики. (Как например С++
имеет уровни макро-процессинга и шаблонизации) и разработчики НЕ готовы их ВСЕ использовать.
А не готовы просто потому что эти уровни оказались не нужны. Например XSLT и стандартизация
схемы. И если эти все уровни не задейстовать - тогда возникает вопрос - а зачем вам вообще Xml?
Ради красивого слова? Или угловых скоб?

В случае сложных документов лично мне кажется, что XML гораздо более читабелен чем json.
При наличии XML-схемы в редакторе гораздо (на порядок) легче писать XML документы благодаря
автодополнению кода — Ctrl+Space и появляется меню с возможными элементами или допустимыми
значениями атрибутов. Что-то мне подсказывает, что XML (даже без схем) вообще лучше поддаётся
автоматической валидации по сравнению с json.

Когда я работал в web я знал и XSLT, и Схемы, и XPath (и даже DTD). Проблем не было.

XML схемы я вообще в метро выучил полистывая распечатанную документацию.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047626
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
JSON (JavaScrip Object notation) создавался для сериализации браузерных объектов и транспорта их в веб-соединениях.
И если у вас есть таблица в 8Гб в сыром виде (это близко к размеру в CSV) то ее представление в JSON
может удвоить объем файла экспорта.

В запакованном виде они не сильно будут отличаться. Еще один неприятный момент CSV - отсутствие описания структуры данных. Прилетает такая выгрузка из 10-15 колонок и сиди гадай где что.

Потом разнородные данные не сохранить в один файл CSV. А как правило надо выгрузить именно такие данные. Например при выгрузке накладной надо куда-то писать шапку. Сталкивался с тем что при небольшой шапке ее суют в тело, т.е. табличка становится такой
Номер документа Дата КонтрагентТоварКоличество
И хз что теперь меньше на диске займет.
mayton
Все равно прогрузить в память такой файл (16 Гб) почти нереально.

Не надо его грузить целиком, читай последовательно. С большими json дела не имел, а с xml было дело, файлик 0.5 Гб быстро читается с помощью XmlReader Наверно и для json есть подобное.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047864
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Xml даже для разработчика сложен. Он имеет много уровней семантики. (Как например С++
имеет уровни макро-процессинга и шаблонизации) и разработчики НЕ готовы их ВСЕ использовать.
А не готовы просто потому что эти уровни оказались не нужны. Например XSLT и стандартизация
схемы. И если эти все уровни не задейстовать - тогда возникает вопрос - а зачем вам вообще Xml?
Ради красивого слова? Или угловых скоб?

Кстати сказать, а наличие JSON Schema тебя не смущает? Странные у тебя рассуждения.

PS: Json популярен не потому что XML плох, а потому что JavaScript — единственный язык
программирования фронт-энда.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047874
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может ли json описывать документы? Вот никогда такого не видел. Пример:
Код: plaintext
1.
2.
3.
4.
<text>
    <paragraph>Bla bla bla bla <ref objId="123"/> bla bla bla bla bla.</paragraph>
    <paragraph>Bla bla <ref objId="321"/> bla bla bla bla bla bla bla.</paragraph>
</text>

Ну и как тут без XSLT...
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047876
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravJavaScript — единственный язык
программирования фронт-энда.это в каком виде спорта?)
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047880
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton

Xml даже для разработчика сложен. Он имеет много уровней семантики. (Как например С++
имеет уровни макро-процессинга и шаблонизации) и разработчики НЕ готовы их ВСЕ использовать.
А не готовы просто потому что эти уровни оказались не нужны. Например XSLT и стандартизация
схемы. И если эти все уровни не задейстовать - тогда возникает вопрос - а зачем вам вообще Xml?
Ради красивого слова? Или угловых скоб?

Кстати сказать, а наличие JSON Schema тебя не смущает? Странные у тебя рассуждения.

PS: Json популярен не потому что XML плох, а потому что JavaScript — единственный язык
программирования фронт-энда.

Я пробовал Json-schema. К сожалению мне не удалось сделать проверки достаточно строгими.
Тоесть у меня получилось проверять только те сущности которые были декларированы. А новые
почему-то успешно проходил валидацию хотя и не должны-быть по идее.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047881
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

Не надо его грузить целиком, читай последовательно. С большими json дела не имел, а с xml было дело, файлик 0.5 Гб быстро читается с помощью XmlReader Наверно и для json есть подобное.

json это всё таки в первую очередь объект а уж во вторую - таблица. Поэтому если работать с ним
на стандартных ЯП программирования веба (JavaScript/C#/Java/Node) то я готов спорить на виски
что для отработки реквеста ... ну не знаю с JPointer нам придется прогрузить весь документ-объект
в память. Вариант курсора (аля БД) скорее всего не сработает. Хотя и респонс может выглядеть
как итератор например. Словом - это тема отдельного топика. Накладные расходы на JPointer
при запросах к толстым документам.
...
Рейтинг: 0 / 0
Заменить запись в файл с txt на xlsx
    #40047884
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton
JSON (JavaScrip Object notation) создавался для сериализации браузерных объектов и транспорта их в веб-соединениях.
И если у вас есть таблица в 8Гб в сыром виде (это близко к размеру в CSV) то ее представление в JSON
может удвоить объем файла экспорта.

В запакованном виде они не сильно будут отличаться. Еще один неприятный момент CSV - отсутствие описания структуры данных. Прилетает такая выгрузка из 10-15 колонок и сиди гадай где что.

Да. Это проблема. Но внятные описания колонок можно сгенерировать лишь для небольшого подмножества
таблиц с малым числом колонок. Я работал с дата-аналитикой где количество колонок было до 1000.
И названия у них были такие типа FXC01.D2.M4 e.t.c. И была какая-то визуальная хронология. Тоесть
следующая колонка могла быть инкрементом от предыдущей. И понимал такое имя - только data-analyst
который работал с данными и мог сказать что - цена акции такой-то в таких-то единицах.

Для таких баз отдельно создавалась мелкая базка которая называлась мета-информация и туда складывались
детальные характеристики. Дескрипшен. Единицы. Иногда вместо этой базки мог быть хардкод в софте.
Например сет классов или пропертей описывал эти колонки наподобие ORM. Хотя сам ОРМ не использовался
но идея была похожа.

Тоесть вобщем неинформативные названия реально существуют но XML не решает на 100%. По крайней мере
я не видел провайдеров бизнес-информации которые лично решили публиковать сводки в XML только потому
что там информативные поля. Скоре они выбирали CSV и полагались на мастерство и опыт тех людей для которых
этот CSV был предназначен.
...
Рейтинг: 0 / 0
25 сообщений из 150, страница 3 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / Заменить запись в файл с txt на xlsx
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]