csv-to-sqlite 2.1 - script support, encodings and brackets

Version 2.1 of csv-to-sqlite was just released.

There are a few new things, suggested in GitHub issues: you can now specify that you do not want brackets around your column names, you can specify the encoding your files (the default still is UTF-8) and it's now easier to use csv-to-sqlite in scripts.

If you wish to do that, simply install it as a dependency:

pip install csv-to-sqlite

Then import it and call write_csv().

import csv_to_sqlite 

# all the usual options are supported
options = csv_to_sqlite.CsvOptions(typing_style="full", encoding="windows-1250") 
input_files = ["abilities.csv", "moves.csv"] # pass in a list of CSV files
csv_to_sqlite.write_csv(input_files, "output.sqlite", options)	

And that's it.

As usual, if you want to see what you can do, call csv-to-sqlite --help. The current list is:

Usage: csv-to-sqlite [OPTIONS]

  A script that processes the input CSV files and copies them into a SQLite
  database. Each file is copied into a separate table. Column names are
  taken from the headers (first row) in the csv file.

  If file names are passed both via the --file option and standard input,
  all of them are processed.

  For example in PowerShell, if you want to copy all the csv files in the
  current folder into a database called "out.db", type:

      ls *.csv | % FullName | csv-to-sqlite -o out.db

  -f, --file PATH                 A file to copy into the database.  Can be
                                  specified multiple times.  All the files are
                                  processed, including file names piped from
                                  standard input.

  -o, --output PATH               The output database path
  -t, --typing [full|quick|none]  Determines whether the script should guess
                                  the column type (int/float/string
                                  supported). quick: only base the types on
                                  the first line full: read the entire file
                                  none: no typing, every column is string

  -D, --drop-tables / --no-drop-tables
                                  Determines whether the tables should be
                                  dropped before creation, if they already
                                  exist (BEWARE OF DATA LOSS)

  -v, --verbose                   Determines whether progress reporting
                                  messages should be printed

  -x, --delimiter TEXT            Choose the CSV delimiter. Defaults to comma.
                                  Hint: for tabs, in Bash use $'\t'.

  -e, --encoding TEXT             Choose the input CSV's file encoding. Use
                                  the string identifier Python uses to specify
                                  encodings, e.g. 'windows-1250'.

  --bracket-style [all|none]      Determines whether all the column names
                                  should be wrapped in brackets, or none of
                                  them should be. Keep in mind that if you
                                  select 'none', it is up to you to ensure the
                                  CSV's column names are also valid SQLite
                                  column names.

                                  all: wrap all. none: no brackets

  --help                          Show this message and exit.