CsvDiff

command module
v0.1.0-beta.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2017 License: MIT Imports: 8 Imported by: 0

README

CsvDiff

CircleCI

output csv diff smartly

Usage

./CsvDiff base.csv comparison.csv --pk pk1 [--pk pk2 ...] [--output filePath]

Csv format has to meet the followings

  • column names are written in the first line
  • values are written in the second and subsequent lines

You can see detail in executing the following command

./CsvDiff --help

Output Examples

example1
$ cat base1.csv
company_id,employee_id,name,created_at
1,1,"Bob","2017/09/24"
1,2,"Tom","2017/08/18"
2,1,"Lisa","2017/04/10"
2,2,"Kate","2016/02/14"

$ cat comparison1.csv
company_id,employee_id,name,created_at
1,1,"Bob","2017/09/24"
1,2,"Ben","2017/06/18"
1,3,"Thomas","2017/03/29"
2,2,"Kate","2016/03/14"

$ ./CsvDiff base1.csv comparison1.csv --pk company_id --pk employee_id | python -m "json.tool"
{
    "added": [
        {
            "company_id": "1",
            "created_at": "2017/03/29",
            "employee_id": "3",
            "name": "Thomas"
        }
    ],
    "addedColumns": [],
    "deleted": [
        {
            "company_id": "2",
            "created_at": "2017/04/10",
            "employee_id": "1",
            "name": "Lisa"
        }
    ],
    "deletedColumns": [],
    "modified": [
        {
            "fromTo": {
                "created_at": {
                    "from": "2017/08/18",
                    "to": "2017/06/18"
                },
                "name": {
                    "from": "Tom",
                    "to": "Ben"
                }
            },
            "pks": {
                "company_id": "1",
                "employee_id": "2"
            }
        },
        {
            "fromTo": {
                "created_at": {
                    "from": "2016/02/14",
                    "to": "2016/03/14"
                }
            },
            "pks": {
                "company_id": "2",
                "employee_id": "2"
            }
        }
    ]
}
example2

It supports add/delete columns diff, too

$ cat base2.csv
id,name,updated_at
1,"Bob","2017/09/24"
2,"Tom","2017/08/18"
3,"Lisa","2016/07/10"

$ cat comparison2.csv
id,name,created_at
1,"Bob","2017/09/24"
2,"Tom","2017/08/18"
3,"Ben","2016/07/10"

$ ./CsvDiff base2.csv comparison2.csv --pk id --output res.json && cat res.json | python -m 'json.tool'
{
    "added": [],
    "addedColumns": [
        "created_at"
    ],
    "deleted": [],
    "deletedColumns": [
        "updated_at"
    ],
    "modified": [
        {
            "fromTo": {
                "name": {
                    "from": "Lisa",
                    "to": "Ben"
                }
            },
            "pks": {
                "id": "3"
            }
        }
    ]
}

Author

Hodaka Suzuki

Lisense

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL