Use docker to generate SQL insert statements from a CSV file

Importing large amounts of data directly from a CSV into your database via SQL workbench or any other visual editor can be a tedious, and very time consuming task - especially if you are connecting via ssh.

I have written a small docker image that will load the contents of your .csv and create an SQL dump. I have imported dumps from this into a postgresql database, but it should work on any SQL database.

You can view the repository and the container registry on my gitlab account. Pull requests welcome! tomfordweb/csv-dumper.

Now, lets create a sample file to see how the container works.

mkdir csv-dumper-input
cd csv-dumper-input
echo '1, john@example.com' >> input.csv
echo '2, bob@example.com' >> input.csv

To process the file, run the following command.

docker run -v $(pwd):/input registry.gitlab.com/tomfordweb/csv-dumper \
    -f /input/input.csv \
    -c key,email:string \
    -t users

Running this command will output the following lines to your terminal

INSERT INTO "users"  (key, email) VALUES('1, john@example.com',NULL);
INSERT INTO "users"  (key, email) VALUES('2, bob@example.com',NULL);

In order to export this data to an SQL file, we can revise the previous command we ran as follows.

docker run -v $(pwd):/input registry.gitlab.com/tomfordweb/csv-dumper \
    -f /input/input.csv \
    -c key,email:string \
    -t users > dump.sql
cat dump.sql

Now we have a sql file that can be imported on a server.