Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/xxlabaza/csv-merger-groovy

Groovy implementation of csv merger
https://github.com/xxlabaza/csv-merger-groovy

Last synced: 14 days ago
JSON representation

Groovy implementation of csv merger

Awesome Lists containing this project

README

        

# Описание #

Это скетч/набросок программы по решению задачи описанной [здесь](https://github.com/joesephz/interns-test/wiki), выполненный мной сразу после окончания собеседования и написанный на языке **Groovy**.

Смысл содеянного в следующем - что бы не создавать в памяти программы лишние структуры данных, при чтении исходных файлов, было принято волевое решение, в ходе которого каждый исходный файл парсится построчно, на основе ключа записи в файле создаётся папка в **./tmp** и в неё кладётся файл, имя которого строится следующим образом:

**имя файла** = **префикс** (уникальный для каждого файла) + **значение ключа**

на основе получившейся файловой структуры можно пробежаться по папкам и, проанализировав их содержимое, создать результирующий файл.

пример работы:

```bash
$> groovy csv_merger.groovy
$> tree tmp/
tmp/
├── 000000000
│   └── A-EL5J-X97W-YRS3
├── 000000001
│   ├── A-4DG1-WUX0-F16B
│   └── B-RLT0-DFHH-1U5U
├── 000000002
│   └── A-P985-U0EX-02QH
├── 000000004
│   └── B-289H-D3WD-U518
├── 000000007
│   └── A-42RY-ES7U-GM6Y
├── 000000009
│   └── A-QL9S-E3DJ-35OH
├── 000000011
│   ├── A-EKH3-5IDH-DNUK
│   └── B-NW8U-C0IQ-WWKV
├── 000000012
│   ├── A-DS9X-1N3P-KIAW
│   ├── B-M3LF-XPWB-8NI6
│   └── B-ZPMK-N3BU-C33D
├── 000000014
│   ├── B-17CN-JCX5-CRJR
│   └── B-NRYG-HFFS-FDS8
└── 000000015
├── A-UJ8E-G1IV-U9PS
└── B-Q0Z1-4JN9-PS7U

10 directories, 16 files

$> cat result.csv
000000001,4DG1-WUX0-F16B,RLT0-DFHH-1U5U
000000011,EKH3-5IDH-DNUK,NW8U-C0IQ-WWKV
000000012,DS9X-1N3P-KIAW,M3LF-XPWB-8NI6
000000012,DS9X-1N3P-KIAW,ZPMK-N3BU-C33D
000000015,UJ8E-G1IV-U9PS,Q0Z1-4JN9-PS7U
```