Skip to main content

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

Project description

PyPI PyPI - 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

MySQL to SQLite3

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

How to run

pip install mysql-to-sqlite3
mysql2sqlite --help

Usage

Usage: mysql2sqlite [OPTIONS]

Options:
  -f, --sqlite-file PATH          SQLite3 database file  [required]
  -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
  -t, --mysql-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-mysql-tables.
  -e, --exclude-mysql-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 --mysql-tables.
  -T, --mysql-views-as-tables     Materialize MySQL VIEWs as SQLite tables
                                  (legacy behavior).
  -L, --limit-rows INTEGER        Transfer only a limited number of rows from
                                  each table.
  -C, --collation [BINARY|NOCASE|RTRIM]
                                  Create datatypes of TEXT affinity using a
                                  specified collation sequence.  [default:
                                  BINARY]
  -K, --prefix-indices            Prefix indices with their corresponding
                                  tables. This ensures that their names remain
                                  unique across the SQLite database.
  -X, --without-foreign-keys      Do not transfer foreign keys.
  -Z, --without-tables            Do not transfer tables, data only.
  -W, --without-data              Do not transfer table data, DDL only.
  -M, --strict                    Create SQLite STRICT tables when supported.
  -h, --mysql-host TEXT           MySQL host. Defaults to localhost.
  -P, --mysql-port INTEGER        MySQL port. Defaults to 3306.
  --mysql-charset TEXT            MySQL database and table character set
                                  [default: utf8mb4]
  --mysql-collation TEXT          MySQL database and table collation
  -S, --skip-ssl                  Disable MySQL connection encryption.
  -c, --chunk INTEGER             Chunk reading/writing SQL records
  -l, --log-file PATH             Log file
  --json-as-text                  Transfer JSON columns as TEXT.
  -V, --vacuum                    Use the VACUUM command to rebuild the SQLite
                                  database file, repacking it into a minimal
                                  amount of disk space
  --use-buffered-cursors          Use MySQLCursorBuffered for reading the
                                  MySQL database. This can be useful in
                                  situations where multiple queries, with
                                  small result sets, need to be combined or
                                  computed with each other.
  -q, --quiet                     Quiet. Display only errors.
  --debug                         Debug mode. Will throw exceptions.
  --version                       Show the version and exit.
  --help                          Show this message and exit.

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/mysql-to-sqlite3: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 tap techouse/mysql-to-sqlite3
brew install mysql-to-sqlite3
mysql2sqlite --help

Project details


Download files

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

Source Distribution

mysql_to_sqlite3-2.5.5.tar.gz (63.1 kB view details)

Uploaded Source

Built Distribution

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

mysql_to_sqlite3-2.5.5-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file mysql_to_sqlite3-2.5.5.tar.gz.

File metadata

  • Download URL: mysql_to_sqlite3-2.5.5.tar.gz
  • Upload date:
  • Size: 63.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mysql_to_sqlite3-2.5.5.tar.gz
Algorithm Hash digest
SHA256 59189d2cbf5d95c92c0b1649609d506751408a3915477e960d06b4d4251c8f27
MD5 7e6edde16b576170a4b29abdc2fc6adc
BLAKE2b-256 2c93989bff5d6aa8ac8851cea7b93058e51e4ca43dd28b5062ab3c23d9a36855

See more details on using hashes here.

Provenance

The following attestation bundles were made for mysql_to_sqlite3-2.5.5.tar.gz:

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

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

File details

Details for the file mysql_to_sqlite3-2.5.5-py3-none-any.whl.

File metadata

File hashes

Hashes for mysql_to_sqlite3-2.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8aa009ea8b51d30c22d5424ed9712ee3c17a706b477d0541ebcffd66ad7a5c02
MD5 1b901384701b30fefd7a9f4ca592b8b3
BLAKE2b-256 dfacb66b500af7cd411058ba8167272d6832d26d35f7eb4d40d7d713402c2bd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for mysql_to_sqlite3-2.5.5-py3-none-any.whl:

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

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