Answers:
GitHub上有一个mysql2sqlite.sh脚本
如标题中所述,脚本可以这样使用:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
备择方案
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man mysql
或man mysqldump
这是转换器的列表。(今天位于archive.today的快照)
一种即使在Windows上也可以使用但很少被提及的替代方法是:使用ORM类为您抽象特定的数据库差异。例如,您可以通过PHP(RedBean),Python(Django的ORM层,Storm,SqlAlchemy),Ruby on Rails(ActiveRecord),可可(CoreData)等获得这些。
即你可以这样做:
Sequel(Ruby ORM)具有用于处理数据库的命令行工具,您必须安装ruby,然后:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysql
和gem install sqlite3
gem install pg
如果你从或向一个Postgres数据库要转换,续集应该有大分贝的适配器
mysql
用mysql2
,如果您使用的是mysql2
ruby-dev
软件包来构建这些本地gem软件包。
并非每个数据库模式都可以转换。MySQL比SQLite更复杂,功能更丰富。但是,如果您的架构足够简单,则可以将其转储到SQL文件中,然后尝试将其导入/加载到SQLite数据库中。
大约2天前,当我不得不将20GB以上的MySQL数据库转换为SQLite时,我遇到了同样的问题。这绝非易事,我最终编写了完成此任务的Python包。
用Python编写的好处在于,它是跨平台的(不同于shell / bash脚本),并且可以使用pip install
(即使在Windows上)也可以轻松安装。它使用生成器和正在处理的数据的分块,因此具有很高的内存效率。
我还付出了一些努力,以将大多数数据类型从MySQL正确转换为SQLite。
该工具还经过了全面测试,可在Python 2.7和3.5+上运行。
它可以通过命令行调用,但也可以用作标准Python类,您可以将其包含在较大的Python编排中。
使用方法如下:
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, --mysql-password TEXT MySQL password
-h, --mysql-host TEXT MySQL host. Defaults to localhost.
-P, --mysql-port INTEGER MySQL port. Defaults to 3306.
-c, --chunk INTEGER Chunk reading/writing SQL records
-l, --log-file PATH Log file
-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.
--help Show this message and exit.
.sql
转储文件,或者是否需要连接到已安装的MySQL数据库?
Sqlite具有正式的转换工具列表。
将MySql DB转换为Sqlite的最简单方法:
1)为您的MySql数据库生成sql转储文件。
2)在此处将文件上传到RebaseData在线转换器
3)一个下载按钮将出现在页面上,以Sqlite格式下载数据库
我找到了完美的解决方案
首先,您需要以下脚本(将其放入名为“ mysql-to-sqlite.sh”的文件中):
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <dumpname>"
exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
echo "Conversion completed without error. Output file: $1.db"
rm $1.sql
rm $1.err
else
echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi
然后,转储数据库的副本:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
现在,运行转换:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
如果一切顺利,您现在应该拥有可以通过sqlite3使用的dumpfile.db。
you@prompt:~$ sqlite3 dumpfile.db
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
dg_cities dg_forms dg_surnames
dg_counties dg_provinces dg_user_accounts
dg_countries dg_provinces_netherlands
dg_first_names dg_states
有不同的方法可以做到这一点。我也遇到了这个问题,我进行了很多搜索,然后找到了将MySQL转换为SQLite的简单方法。
跟着这些步骤:
首先,您需要安装SQLite DB浏览器(非常小巧,可以快速查看表和数据)
在记事本中打开您的MySQL文件,如果在记事本中打开++,那会很棒
删除包含信息或查询的前几行,然后保存。
打开SQLite DB浏览器,创建数据库,然后打开表,并选择与MySQL数据库中相同的类型。
在SQLite DB浏览器的菜单栏中,选择File->,然后导入保存的MySQL数据库文件。
警告对话框后,它将轻松转换为SQLite。
如果出错,则删除更多多余的行(如果您的MySQL文件具有)。
您也可以根据试用版将MySQL安装到SQLite Converter Software,但是我提供的转换信息是生命周期。
对于运行Mac的该问题,我的解决方案是
安装续集
$ gem install sequel
如果仍然需要
% gem install mysql sqlite3
然后使用以下基于Sequel doc bin_sequel.rdoc的文档(请参见复制数据库)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
一个窗口用户可以安装Ruby和Sequel为Windows的解决方案。
我在此线程上尝试了多种方法,但对我没有任何帮助。所以这是一个新的解决方案,我也发现它很简单:
sqlite
创建此数据库所需的所有查询。就这样,现在您有了SQLite数据库。
如果为您提供了数据库文件,但尚未安装正确的服务器(SQLite或MySQL),请尝试以下工具:https : //dbconvert.com/sqlite/mysql/试用版允许转换每个表的前50条记录,其余数据带有水印。这是Windows程序,可以转储到正在运行的数据库服务器中,也可以将输出转储到.sql文件中。