CSV Comparator is a tool for comparing files which contain CSV-Data. It was created for performance engineers to be able to have a easy way to compare data from two testruns and be able to automate the comparing process of various files with scripts.
There is a command line tool as well as a user interface.
In case you need to compare .xml-Files you can convert them to .csv-Files with my other project CSV Transformer.
The advantages by using CSV as input and output are the following:
- Many applications allow an export of its data to CSV or Excel(were it could be saved to CSV)
- It is possible to pre- and postprocess the data, e.g removing version numbers before comparing
- It is easy to create CSV data from logfiles and other resources by using unix tools like sed or awk
- CSV can be loaded into other applications, especially Excel, were it can be formatted by macros for analyzing.
Features
- Comparing .csv-Files column-wise
- Compare difference, difference in percentage or as strings
- Reading files with any delimiter, with or without quotes
- Making row identifiers unique before comparing
- Divide/Multiply values before comparing
- Comparing .csv-Files containing sections of data (see top level feature)
- Write result with or without quotes
- sorting the result
- GUI: saving/loading of config files
- GUI: saving of bash scripts
License
Creative Commons Attribution Non-Commercial License V2.0Follow CSV Comparator
User Reviews
-
Just what I needed to compare two .csv files - thanks Reto Scheiwiller. The output file shows each line from each file, and for each column whether the attribute is the same ("EQ") or different ("NOTEQ") based on a key (id) that you define that uniquely identifies lines in each file. It also shows if a line (based on the id) exists in one file but not the other. The main issue is that I got it working from the GUI, but cannot get the CLI to run - could be environmental (Linux 64 bit, Java 8) $HOME/Java8/jdk1.8.0_151/bin/java -jar ./CSVComparator/CSVComparatorCLI_java8.jar -config.loglevel.console=ALL -config.loglevel.file=OFF –older.file=./temp/compareold/CompFile.tab -older.delimiter=',' -older.label=old –younger.file=./temp/comparenew/CompFile.tab -younger.delimiter=',' -younger.label=new -column.identifier=ID,ID -result.file=home/mlebrun/temp/compareout.txt -result.delimiter=';' -result.comparediff=false -result.comparediff%=false -result.comparestring=true Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) Caused by: java.lang.NullPointerException at java.io.File.<init>(File.java:277) at com.csvapi.compare.CSVAPICompare.compareCSVWriteResult(CSVAPICompare.java:48) at com.csvcomparator.cli.main.CSVComparatorCLI.main(CSVComparatorCLI.java:55)