csvsql
Generate SQL statements for a CSV file or execute those statements directly on a database.
TLDR
Generate a CREATE TABLE SQL statement for a CSV file
Import a CSV file into an SQL database
Run an SQL query on a CSV file
DESCRIPTION
usage: csvsql [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
[-p ESCAPECHAR] [-z FIELD_SIZE_LIMIT] [-e ENCODING] [-L LOCALE] [-S] [--blanks] [--date-format DATE_FORMAT] [--datetime-format DATETIME_FORMAT] [-H] [-K SKIP_LINES] [-v] [-l] [--zero] [-V] [-i {firebird,mssql,mysql,oracle,postgresql,sqlite,sybase}] [--db CONNECTION_STRING] [--query QUERY] [--insert] [--prefix PREFIX] [--before-insert BEFORE_INSERT] [--after-insert AFTER_INSERT] [--tables TABLE_NAMES] [--no-constraints] [--unique-constraint UNIQUE_CONSTRAINT] [--no-create] [--create-if-not-exists] [--overwrite] [--db-schema DB_SCHEMA] [-y SNIFF_LIMIT] [-I] [--chunk-size CHUNK_SIZE] [FILE [FILE ...]]
Generate SQL statements for one or more CSV files, or execute those statements directly on a database, and execute one or more SQL queries.
positional arguments:
- FILE
-
The CSV file(s) to operate on. If omitted, will accept input as piped data via STDIN.
optional arguments:
- -h, --help
-
show this help message and exit
- -d DELIMITER, --delimiter DELIMITER
-
Delimiting character of the input CSV file.
- -t, --tabs
-
Specify that the input CSV file is delimited with tabs. Overrides "-d".
- -q QUOTECHAR, --quotechar QUOTECHAR
-
Character used to quote strings in the input CSV file.
- -u {0,1,2,3}, --quoting {0,1,2,3}
-
Quoting style used in the input CSV file. 0 = Quote Minimal, 1 = Quote All, 2 = Quote Non-numeric, 3 = Quote None.
- -b, --no-doublequote
-
Whether or not double quotes are doubled in the input CSV file.
- -p ESCAPECHAR, --escapechar ESCAPECHAR
-
Character used to escape the delimiter if --quoting 3 ("Quote None") is specified and to escape the QUOTECHAR if --no-doublequote is specified.
- -z FIELD_SIZE_LIMIT, --maxfieldsize FIELD_SIZE_LIMIT
-
Maximum length of a single field in the input CSV file.
- -e ENCODING, --encoding ENCODING
-
Specify the encoding of the input CSV file.
- -L LOCALE, --locale LOCALE
-
Specify the locale (en_US) of any formatted numbers.
- -S, --skipinitialspace
-
Ignore whitespace immediately following the delimiter.
- --blanks
-
Do not convert "", "na", "n/a", "none", "null", "." to NULL.
- --date-format DATE_FORMAT
-
Specify a strptime date format string like "%m/%d/%Y".
- --datetime-format DATETIME_FORMAT
-
Specify a strptime datetime format string like "%m/%d/%Y %I:%M %p".
- -H, --no-header-row
-
Specify that the input CSV file has no header row. Will create default headers (a,b,c,...).
- -K SKIP_LINES, --skip-lines SKIP_LINES
-
Specify the number of initial lines to skip before the header row (e.g. comments, copyright notices, empty rows).
- -v, --verbose
-
Print detailed tracebacks when errors occur.
- -l, --linenumbers
-
Insert a column of line numbers at the front of the output. Useful when piping to grep or as a simple primary key.
- --zero
-
When interpreting or displaying column numbers, use zero-based numbering instead of the default 1-based numbering.
- -V, --version
-
Display version information and exit.
- -i {firebird,mssql,mysql,oracle,postgresql,sqlite,sybase}, --dialect {firebird,mssql,mysql,oracle,postgresql,sqlite,sybase}
-
Dialect of SQL to generate. Only valid when --db is not specified.
- --db CONNECTION_STRING
-
If present, a SQLAlchemy connection string to use to directly execute generated SQL on a database.
- --query QUERY
-
Execute one or more SQL queries delimited by ";" and output the result of the last query as CSV. QUERY may be a filename.
- --insert
-
In addition to creating the table, also insert the data into the table. Only valid when --db is specified.
- --prefix PREFIX
-
Add an expression following the INSERT keyword, like OR IGNORE or OR REPLACE.
- --before-insert BEFORE_INSERT
-
Execute SQL before the INSERT command.
- --after-insert AFTER_INSERT
-
Execute SQL after the INSERT command.
- --tables TABLE_NAMES
-
A comma-separated list of names of tables to be created. By default, the tables will be named after the filenames without extensions or "stdin".
- --no-constraints
-
Generate a schema without length limits or null checks. Useful when sampling big tables.
- --unique-constraint UNIQUE_CONSTRAINT
-
A column-separated list of names of columns to include in a UNIQUE constraint.
- --no-create
-
Skip creating a table. Only valid when --insert is specified.
- --create-if-not-exists
-
Create table if it does not exist, otherwise keep going. Only valid when --insert is specified.
- --overwrite
-
Drop the table before creating. Only valid when --insert is specified and --no-create is not specified.
- --db-schema DB_SCHEMA
-
Optional name of database schema to create table(s) in.
- -y SNIFF_LIMIT, --snifflimit SNIFF_LIMIT
-
Limit CSV dialect sniffing to the specified number of bytes. Specify "0" to disable sniffing entirely.
- -I, --no-inference
-
Disable type inference when parsing the input.
- --chunk-size CHUNK_SIZE
-
Chunk size for batch insert into the table. Only valid when --insert is specified.
SEE ALSO
The full documentation for csvsql is maintained as a Texinfo manual. If the info and csvsql programs are properly installed at your site, the command info csvsql should give you access to the complete manual.