Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Программирование

Консольная утилита обработки CSV файлов. Кто возьмется ? : Программирование

25.11.2024 23:15


28.02.2018 12:55
Потребовалась утилитка для агрегации данных из csv файлов.
Консольная, под Windows. Готовых не обнаружил, поэтому - вдруг кто возьмется сделать ?

смысл задачи - из разных магазинов собираются данные в один файл. Нужно объединить эти данные, совпадающие по некоему признаку (ШК, название, некий идентификатор).
исходные данные - csv файл, в нем данные, типа
DB1;00001;Яблоко;65;33;11
DB2;00011;Яблоко;64;35;7
DB3;00021;Яблоко;63;31;8
новый CSV файл - типа:
Яблоко;65;64;63;26
где 1 "колонка" - некий идентификатор (в данном случае название), вторая - колонка 4 от тех строк, у которых DB1, третья - колонка 4 от тех строк, у которых DB2, четвертая - колонка 4 от тех строк, у которых DB3, пятая - сумма колонок 6 для всех найденных строк с идентификатором.

Это сильно предварительное описание. Но в целом требуется - объединять строки, считать итоги/подитоги, идентификатор для поиска - текст, причем для штрихкодов возможен вариант, когда будет не один, а несколько идентификаторов, и нужно будет искать все возможные сочетания.
Отсюда варианты, когда для одного магазина одна строка, соответствует нескольким для другого, это еще не продумывал, как объединять.

Но в целом, надеюсь, хотелку выразил понятно.
И вопросы - возьмется ли кто такое сделать ? (с передачей исходников, чтобы потом можно было мелочи и самим подкорректировать). Ну или сколько такое может стоить ?
28.02.2018 13:01
на адинэске делается на коленке и ничего не стоит
28.02.2018 13:05
на 1с-ке я и сам могу сделать, а нужно именно что консольная независимая. И шустрая.
для автоматической обработки данных.
28.02.2018 13:06
Такие файлы легко загоняются в Oracle через sqlldr, потом обскладывайся :) sqlldr и sqlplus - консольные.
28.02.2018 13:10
Цитата:
OlegON Такие файлы легко загоняются в Oracle через sqlldr, потом обскладывайся :) sqlldr и sqlplus - консольные.
Над этим думал, но, к сожалению, оракл тоже недостаточно хорошо знаю. Интересно просто - сколько вообще такая утилитка может стоить ? Если 5-10 т.р., то проще заказную сделать. Если 20 и выше - то что-то самому делать.
28.02.2018 13:14
Цитата:
Starter Это сильно предварительное описание.
Отсюда и цена очень предварительная может быть, но в 10, думаю, наверняка уложишься.
28.02.2018 13:34
А в Эксел загнать? И макросами ее - макросами! Или у вас приходят 1000 файлов в день?
в 1993 году я бы на паскале дня за 2-3 управился. Сейчас можно попробовать на Делфи, но боюсь затянуть по времени - многое вспоминать придется, лет 15 на нем не писал.
28.02.2018 14:02
Из наработок уже есть что-то подобное. На днях конвертер делал для терминала cipher lab под нужды супермага. Правда там не совсем консолька, утилита в трее висит мониторит файлики и конвертит при появлении.
А так большой опыт в обработке текстовых массивов(формализованных) и дальнейшей обработки их(чаще всего для супермага конечно)
Но думаю смогу помочь, инфы только маловато. Профессия такая, без ТЗ шагу не делать )))
[OFF]
C# 2010 или VB 2010
[/OFF

добавлю...
Цитата:
Это сильно предварительное описание. Но в целом требуется - объединять строки, считать итоги/подитоги, идентификатор для поиска - текст, причем для штрихкодов возможен вариант, когда будет не один, а несколько идентификаторов, и нужно будет искать все возможные сочетания.
Отсюда варианты, когда для одного магазина одна строка, соответствует нескольким для другого, это еще не продумывал, как объединять.
]

Сильно расплывчато описано ))) Универсальная программа на все случаи жизни будет стоить куда больше 10 т.р.
28.02.2018 14:13
сколько файлов будет обрабатываться? как часто?
сколько в файле будет строк?
я у себя что то похожее делал - со всех магазинов выгружались продажи алкоголя с акцизными марками, копировалось на фтп-сервер
а в ЦО все загружалось в локальную базу на SQLite и дальше уже строились отчеты, проверялись марки на дубли и т.п.
28.02.2018 14:40
Если файлы формализованы - то "пойду по стопам Olegon" - в SQL их

Вот отрывок bat-файла, загоняющего данные в таблицу

Код:
if not exist %2 (
   echo %date% %time% Выяснили, что выгружать нечего >>%3
   echo %date% %time% ===================================================>>%3
   GOTO :EOF
)
fc %2 %5 /b >nul 2>&1 && set FCRes=Yes|| set FCRes=No
if %FCRes% == Yes (
   echo %date% %time% Файлы %2 и %5 совпали (уже загружено), удаляем новый>>%3
   del /Q %2 > NUL
   echo %date% %time% ===================================================>>%3
   GOTO :EOF
)
if %FCRes% == No (
   echo %date% %time% Файлы %2 и %5 - НЕ совпали! Перезапишем таблицу Table%6>>%3
   echo %date% %time%   Сначала обнулим таблицу Table%6>>%3
   "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\osql" -S .\SQLEXPRESS -E -n -Q "TRUNCATE TABLE [Informer].[dbo].[Table%6]" >>%3
   echo %date% %time%   Таблица Table%6 удалена>>%3
   echo %date% %time%   Теперь перезапишем таблицу Table%6>>%3
   "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\osql" -S .\SQLEXPRESS -E -n -Q "BULK INSERT [Informer].[dbo].[Table%6] FROM '%2' WITH (CODEPAGE='866',FIELDTERMINATOR = '	',TABLOCK)">>%3
   echo %date% %time%   Таблица Table%6 перезаписана >>%3
   echo %date% %time%   Переменуем %2 в %5>>%3
   if exist %5 del %5
   ren %2 %FOutOld% > NUL
   echo %date% %time%   Переменовали %2 в %5>>%3
)
Часовой пояс GMT +3, время: 23:15.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.