将MySQL转换为SQlite
是否有可能从Windows上的免费工具从MySQL转换为SQLite?
GitHub上有一个mysql2sqlite.sh脚本
如标题所述,脚本可以像这样使用:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
备择scheme
- 更新版本https://github.com/dumblob/mysql2sqlite
- 一个更简单的脚本发布在MySQL论坛上
这是一个转换器列表:
链接现在似乎下降,所以它只能通过在archive.org上的快照 ,最后更新2011年。
另一种方法,即使在windows上也能正常工作,但很less提及的是:使用一个ORM类来抽象出特定的数据库差异。 例如,你可以在PHP( RedBean ),Python(Django的ORM层, Storm , SqlAlchemy ),Ruby on Rails( ActiveRecord ),Cocoa( CoreData )等等中获得这些信息。
即你可以这样做:
- 使用ORM类从源数据库加载数据。
- 将数据存储在内存中或序列化到磁盘。
- 使用ORM类将数据存储到目标数据库中。
续集(Ruby ORM)有一个用于处理数据库的命令行工具,你必须安装ruby,然后:
$ gem install sequel mysql2 sqlite3 $ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
不是每个数据库模式都可以转换。 MySQL比SQLite更复杂,function更丰富。 但是,如果您的模式足够简单,则可以将其转储到SQL文件中,并尝试将其导入/将其加载到SQLite数据库中。
从这个网页: http : //osenxpsuite.net
下载SQLite2009专业企业pipe理器
这是免费的。 它可以从Mysql数据库导入数据。 我刚刚转换了一个17M数据库。 这十分完美。
我find了完美的解决scheme! 看看: http : //www.jbip.net/content/how-convert-mysql-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
Sqlite已经正式列出了转换工具。
为MySQL WorkBenchfind这个插件:
http://www.henlich.de/software/sqlite-export-plugin-for-mysql-workbench/
我运行Mac的这个问题的解决scheme是
- 安装Ruby和续集类似于Macario的答案。 我跟着这个链接来帮助设置Mac OSX的 Ruby,MySQL和sqlite3 Ruby on Rails开发设置
-
安装续集
$ gem install sequel
如果仍然需要
% gem install mysql sqlite3
然后使用基于Sequel doc bin_sequel.rdoc的以下内容 (请参见复制数据库)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
一个Windows用户可以安装Ruby和Sequel的Windows解决scheme。
如果你有经验,编写Perl \ Python等简单的脚本,并将MySQL转换为SQLite。 从Mysql读取数据并将其写入SQLite。
我喜欢Jflybuild议的SQLite2009专业企业pipe理器。 然而:
-
MySQL数据typesINT不会转换为SQlite数据typesINTEGER(适用于DBeaver)
-
它不会从MySQL导入外键约束(我找不到任何支持将外键约束从MySQL传输到SQlite的工具。)
从转换器工具列表中,我发现了科西 。 这是一个从各种数据库服务器(包括MySQL)导入到SQLite的UI工具。 当导入一些数据库(比如说从MySQL)时,它将以它的forms存储。 科西格式是“原生”的SQLite格式。 因此,只需复制kexi文件并以sqlite格式input数据即可
如果你已经有一个数据库文件,并没有安装正确的服务器(SQLite或MySQL),请尝试以下工具: https : //dbconvert.com/sqlite/mysql/试用版允许转换每个表的前50个logging,其余的数据被embedded水印。 这是一个Windows程序,可以转储到正在运行的数据库服务器,也可以将输出转储到.sql文件
有不同的方法来做到这一点。 我也有这个问题,我search了很多。 然后我有一个简单的方法将MySql转换为Sqlite。
按照这些说明:
第1步 :首先你需要安装SqliteDB浏览器(非常小,快速查看表和数据)
步骤2 :在记事本中打开MySql文件,如果您在Notepad ++中打开,那将会非常棒
步骤3 :删除第一个额外的行包含信息或查询并保存。
步骤4 :打开Sqlite Db Brower,创build数据库,然后在Mysql数据库中创build表和相同types。
第5步 :在Sqlite Db浏览器的菜单栏中selectFile->然后导入您保存的dat的Mysql文件。
警告对话框后,它将很容易转换成Sqlite。
如果错误,然后删除更多的额外的行,如果你的Mysql文件。
您也可以在试用的基础上安装Mysql到Sqlite转换器软件但是我给转换的信息是生命时间。
您也可以查看本教程获取更多帮助: https : //www.youtube.com/watch?v=UcAHsm9iwpw
希望这个帮助。
这是一个简单的转换器: http : //mysql2sqlite.felipemarques.com.br/ (该网站是巴西葡萄牙语)