Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mysql2sqlite/mysql2sqlite
Converts MySQL dump to SQLite3 compatible dump
https://github.com/mysql2sqlite/mysql2sqlite
Last synced: about 2 months ago
JSON representation
Converts MySQL dump to SQLite3 compatible dump
- Host: GitHub
- URL: https://github.com/mysql2sqlite/mysql2sqlite
- Owner: mysql2sqlite
- License: mit
- Created: 2015-08-28T12:25:36.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-10-04T15:19:47.000Z (over 1 year ago)
- Last Synced: 2024-10-14T21:21:53.205Z (3 months ago)
- Language: Awk
- Homepage:
- Size: 42 KB
- Stars: 1,847
- Watchers: 35
- Forks: 278
- Open Issues: 55
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome - mysql2sqlite/mysql2sqlite - 10 star:1.9k fork:0.3k Converts MySQL dump to SQLite3 compatible dump (Awk)
README
# mysql2sqlite
Converts MySQL dump to SQLite3 compatible dump (including MySQL `KEY xxxxx` statements from the `CREATE` block).
## Usage
1. Dump MySQL DB
~~~~
mysqldump --skip-extended-insert --compact [options]... DB_name > dump_mysql.sql
# or
#mysqldump --no-data -u root -pmyPassword [options]... DB_name > dump_mysql.sql
~~~~1. Convert the dump to SQLite3 DB
~~~~
./mysql2sqlite dump_mysql.sql | sqlite3 mysqlite3.db
~~~~(both `mysql2sqlite` and `sqlite3` might write something to stdout and stderr - e.g. `memory` coming from `PRAGMA journal_mode = MEMORY;` is not harmful)
## Development
The script is written in *awk* (tested with gawk, but should work with original awk, and the lightning fast mawk) and shall be fully POSIX compliant.
It's originally based on the newest fork (https://gist.github.com/bign8/9055981/05e65fd90c469c5eaa730823910c0c5f9de40ab4) of the original `mysql2sqlite.sh` (https://gist.github.com/esperlu/943776/be469f0a0ab8962350f3c5ebe8459218b915f817) with the following patches:
* fix the non-standard `COMMENT` field statement removal
* ignore `CREATE DATABASE` statements (`USE` statements were already ignored)
* add support for multiple-record `INSERT INTO VALUES`
* revise support for lower-case SQL statements
* fix `AUTO_INCREMENT` handling
* trim hexadecimal values longer than 16 characters and issue a warning about it
* add identifier case sensitivity warning in case `IF NOT EXISTS` or `TEMPORARY` has been detected (on unix sqlite3 treats temporary table name `FILES` the same as `files`; in other words, sqlite3 doesn't issue any warning about cross-collisions between `TABLE` and `TEMPORARY TABLE` identifiers)
* replace `COLLATE xxx_xxxx_xx` statements with `COLLATE BINARY` (https://gist.github.com/4levels/0d5da65bf9d70479fbe3/d0ac3d295dc5e2f72411ad06c07a22931368a1b7)
* handle `CONSTRAINT FOREIGN KEY` (https://gist.github.com/BastienDurel/7f413d13d7b858aef31c/922be110d011b9da340ae545372214b597ad7b84)Feel free to **contribute** (preferably by issuing a pull request)!
## License
MIT
## History
* @esperlu created initial version in 2011 as gist on GitHub
* many different contributors forked the gist and made wildly varying changes, because @esperlu stopped working on it and didn't respond
* @dumblob took over in Aug 2015 and applied the most important patches from all the forks as well as many his own patches tested on Drupal DB
* @dumblob added the MIT license under assumption, that the original gist was released into public domain, because despite significant changes, it wasn't clean room engineering.
* 2016-05-11 17:32 UTC+2 [@esperlu declared](https://github.com/dumblob/mysql2sqlite/issues/2 ) MIT as a fitting license (also retrospectively) and the [original gist](https://gist.github.com/esperlu/943776 ) as deprecated.