CSV files are a quick and convenient way to record structured data in a generic format. Because CSV files are so easy to create, multiple similar versions of very large CSV files can quickly proliferate. Often it becomes necessary to compare CSV files to find the desired version. In an ETL (Extract Transform Load) scenario, a data analyst may want to compare a CSV file to a database table for validation or to update data.
DiffDog, the unique XML-aware diff / merge tool from Altova, supports CSV as a native file format for comparison and can compare and selectively merge data CSV to CSV, or between a CSV file and database table. Let’s look at an example.
Since CSV files contain structured data, a CSV comparison is launched using the DiffDog Compare Database Data selection, either from the File menu or the tool icon. This opens a new comparison window where the user selects the left and right comparison objects.
Note that DiffDog lets you compare CSV files with comma, tab, or semicolon characters as column separators and files with or without header rows.
In the screenshot below, the user has selected left and right comparison files, mapped the files at the top level to compare all columns, and executed the comparison by clicking the green Compare tool icon at the top right side of the toolbar.
Note the row count for each file near the object name and the not-equal icon in the connection link. These two CSV files have the same number of rows, but the contents are not identical. The column names are listed below each object name. You can deselect any individual connection to prevent comparison of that column.
Next, we want to see the exact differences between the CSV files. Right-clicking the unequal connection line opens a menu with an option to view detailed results.
The result window shows a detailed view of both files.
The navigation toolbar at the top lets you quickly locate the first difference between the files. Perhaps an order for customer number 544 was incorrectly entered and needed to be reclassified to a different region and sales rep.
You can select and merge individual differences between the CSV files within this window via a right-click context menu:
You can merge differences in either direction and save the results by updating the existing CSV files or saving new files with new names.
Compare CSV Files to Database Tables
A CSV to database comparison is opened simply by using the connection wizard to supply a database as the comparison object on either side. The illustration below shows our original CSV on the left side and a SQLite database on the right.
In this example the contents of the CSV and database table are equal. If there are differences, all the CSV-to-CSV comparison merge features described above also work for CSV-to-database comparisons. Any changes to the database table can be instantly committed to the database directly from the results window.
Supported databases are:
• Firebird 2.5, 3
• IBM DB2 for iSeries® v6.1, 7.1, 7.2, 7.3
• IBM DB2® 8, 9.1, 9.5, 9.7, 10.1, 10.5
• Informix® 11.70, 12.10
• MariaDB 10, 10.3
• Microsoft Access™ 2003, 2007, 2010, 2013, 2019
• Microsoft® Azure SQL
• Microsoft® SQL Server® 2005, 2008, 2012, 2014, 2016, 2017, 2019
• MySQL® 5, 5.1, 5.5, 5.6, 5.7, 8
• Oracle® 9i, 10g, 11g, 12c, 18, 19
• PostgreSQL 8, 9.0.10, 9.1.6, 9.2.1, 9.4, 9.6, 10, 11
• Progress OpenEdge 11.6
• SQLite 3.x
• Sybase® ASE 15, 16
• Teradata 16
Automate CSV Comparisons with DiffDog Server
You can automate report generation for CSV-to-CSV and CSV-to-database comparisons using DiffDog Server. Once installed on a machine in your network, DiffDog Server runs as a service. You can run comparisons by invoking DiffDog Server either from a command line interface or through executable scripts.
If you need to perform the same data comparison frequently, you can set it up once in DiffDog and save it to a database data comparison (.dbdif) file, which can be automatically executed by DiffDog Server.
DiffDog Server is available for Windows, Windows Server, Linux, and macOS platforms.
Download a free trial to find out for yourself how easily DiffDog can help you compare CSV files!