Created by: jeroenjanssens
This pull request adds a new utility to csvkit
: sql2csv
, which is a generic command-line tool that can connect a database, execute a query, and output csv. It might be considered as the complement of csvsql
. The name sql2csv
has been chosen in order to be consistent with in2csv
. It borrows existing code from csvsql
and in2csv
, and introduces no additional dependencies. Appropriate tests are included.
SQL queries can specified via a FILE
, STDIN
, or --query
. The latter, if specified, takes precedence. The --no-header-row
and --linenumbers
options are supported. Example usage:
$ echo 'select * from foo' | sql2csv --db 'sqlite:///foo.db'
a,b,c
1,2,3
The default database connection is sqlite://
, which allows you execute a query that doesn't require a table:
$ sql2csv --query 'select 4+5 as answer'
answer
9
Interesting side-effect: by combining sql2csv
with csvsql
, you can effectively execute SQL queries on CSV files:
#!/usr/bin/env bash
TMPDB="$(mktemp)"
csvsql --db "sqlite:///${TMPDB}" --table 'csv' --insert
sql2csv --db "sqlite:///${TMPDB}" --query "$1"
rm $TMPDB