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
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 Options: -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.