Skip to main content

A simple Python tool to transfer data from SQLite 3 to MySQL

Project description

PyPI PyPI - Downloads Homebrew Formula Downloads PyPI - Python Version MySQL Support MariaDB Support GitHub license Contributor Covenant PyPI - Format Code style: black Codacy Badge Test Status CodeQL Status Publish PyPI Package Status codecov GitHub Sponsors GitHub stars

SQLite3 to MySQL

A simple Python tool to transfer data from SQLite 3 to MySQL.

How to run

pip install sqlite3-to-mysql
sqlite3mysql --help

Usage

Usage: sqlite3mysql [OPTIONS]

Options:
  -f, --sqlite-file PATH          SQLite3 database file  [required]
  -t, --sqlite-tables TUPLE       Transfer only these specific tables (space
                                  separated table names). Implies --without-
                                  foreign-keys which inhibits the transfer of
                                  foreign keys. Can not be used together with
                                  --exclude-sqlite-tables.
  -e, --exclude-sqlite-tables TUPLE
                                  Transfer all tables except these specific
                                  tables (space separated table names).
                                  Implies --without-foreign-keys which
                                  inhibits the transfer of foreign keys. Can
                                  not be used together with --sqlite-tables.
  -A, --sqlite-views-as-tables    Materialize SQLite views as tables in MySQL
                                  instead of creating matching MySQL views
                                  (legacy behavior).
  -X, --without-foreign-keys      Do not transfer foreign keys.
  -W, --ignore-duplicate-keys     Ignore duplicate keys. The default behavior
                                  is to create new ones with a numerical
                                  suffix, e.g. 'exising_key' ->
                                  'existing_key_1'
  -d, --mysql-database TEXT       MySQL database name  [required]
  -u, --mysql-user TEXT           MySQL user  [required]
  -p, --prompt-mysql-password     Prompt for MySQL password
  --mysql-password TEXT           MySQL password
  -h, --mysql-host TEXT           MySQL host. Defaults to localhost.
  -P, --mysql-port INTEGER        MySQL port. Defaults to 3306.
  -k, --mysql-socket PATH         Path to MySQL unix socket file. Cannot be
                                  used with --mysql-ssl-* options.
  --mysql-ssl-ca PATH             Path to SSL CA certificate file. Cannot be
                                  used with --mysql-socket or --skip-ssl.
  --mysql-ssl-cert PATH           Path to SSL certificate file. Must be
                                  provided together with --mysql-ssl-key.
                                  Cannot be used with --mysql-socket or
                                  --skip-ssl.
  --mysql-ssl-key PATH            Path to SSL key file. Must be provided
                                  together with --mysql-ssl-cert. Cannot be
                                  used with --mysql-socket or --skip-ssl.
  -S, --skip-ssl                  Disable MySQL connection encryption. Cannot
                                  be used with --mysql-ssl-* options.
  -i, --mysql-insert-method [DEFAULT|IGNORE|UPDATE]
                                  MySQL insert method. DEFAULT will throw
                                  errors when encountering duplicate records;
                                  UPDATE will update existing rows; IGNORE
                                  will ignore insert errors. Defaults to
                                  IGNORE.
  -E, --mysql-truncate-tables     Truncates existing tables before inserting
                                  data.
  --mysql-integer-type TEXT       MySQL default integer field type. Defaults
                                  to INT(11).
  --mysql-string-type TEXT        MySQL default string field type. Defaults to
                                  VARCHAR(255).
  --mysql-text-type [LONGTEXT|MEDIUMTEXT|TEXT|TINYTEXT]
                                  MySQL default text field type. Defaults to
                                  TEXT.
  --mysql-charset TEXT            MySQL database and table character set
                                  [default: utf8mb4]
  --mysql-collation TEXT          MySQL database and table collation
  -T, --use-fulltext              Use FULLTEXT indexes on TEXT columns. Will
                                  throw an error if your MySQL version does
                                  not support InnoDB FULLTEXT indexes!
  --with-rowid                    Transfer rowid columns.
  -c, --chunk INTEGER             Chunk reading/writing SQL records
  -K, --mysql-skip-create-tables  Skip creating tables in MySQL.
  -J, --mysql-skip-transfer-data  Skip transferring data to MySQL.
  -l, --log-file PATH             Log file
  -q, --quiet                     Quiet. Display only errors.
  --debug                         Debug mode. Will throw exceptions.
  --version                       Show the version and exit.
  --help                          Show this message and exit.

MySQL SSL note: when --mysql-ssl-ca is provided, MySQL Connector/Python verifies the server certificate chain. --mysql-ssl-cert and --mysql-ssl-key enable client certificate authentication. These options do not enable hostname identity verification. If you provide only the client certificate and key without --mysql-ssl-ca, the server certificate is not verified.

Docker

If you don't want to install the tool on your system, you can use the Docker image instead.

docker run -it \
    --workdir $(pwd) \
    --volume $(pwd):$(pwd) \
    --rm ghcr.io/techouse/sqlite3-to-mysql:latest \
    --sqlite-file baz.db \
    --mysql-user foo \
    --mysql-password bar \
    --mysql-database baz \
    --mysql-host host.docker.internal

This will mount your host current working directory (pwd) inside the Docker container as the current working directory. Any files Docker would write to the current working directory are written to the host directory where you did docker run. Note that you have to also use a special hostname host.docker.internal to access your host machine from inside the Docker container.

Homebrew

If you're on macOS, you can install the tool using Homebrew.

brew install sqlite3-to-mysql
sqlite3mysql --help

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlite3_to_mysql-2.6.0.tar.gz (67.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqlite3_to_mysql-2.6.0-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file sqlite3_to_mysql-2.6.0.tar.gz.

File metadata

  • Download URL: sqlite3_to_mysql-2.6.0.tar.gz
  • Upload date:
  • Size: 67.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sqlite3_to_mysql-2.6.0.tar.gz
Algorithm Hash digest
SHA256 2ac88e1a84fe035c732c83041c1965454bacc5ccf2a52bdb01fb4c5011bd7174
MD5 d0e507c172c50d368c389cf91bae9b5b
BLAKE2b-256 dda3a39130ba3bbd9ad22ca794fd5ef93b20492474c16879ced76c6b05e60986

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlite3_to_mysql-2.6.0.tar.gz:

Publisher: publish.yml on techouse/sqlite3-to-mysql

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlite3_to_mysql-2.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlite3_to_mysql-2.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91b07b00ccd0e82a6d127145f7e3d1367868bd40ae768bffd4bea6e3f684da27
MD5 ac905f1697386b0143cb4aecb220fb6d
BLAKE2b-256 9c4f638f7cec9195e46dd80ba64322935143515462b99f931d9cd69ecb25a227

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlite3_to_mysql-2.6.0-py3-none-any.whl:

Publisher: publish.yml on techouse/sqlite3-to-mysql

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page