将MySQL转换为SQlite

是否有可能从Windows上的免费工具从MySQL转换为SQLite?

GitHub上有一个mysql2sqlite.sh脚本

如标题所述,脚本可以像这样使用:

./mysql2sqlite.sh myDbase | sqlite3 database.sqlite 

备择scheme

这是一个转换器列表:

链接现在似乎下降,所以它只能通过在archive.org上的快照 ,最后更新2011年。


另一种方法,即使在windows上也能正常工作,但很less提及的是:使用一个ORM类来抽象出特定的数据库差异。 例如,你可以在PHP( RedBean ),Python(Django的ORM层, Storm , SqlAlchemy ),Ruby on Rails( ActiveRecord ),Cocoa( CoreData )等等中获得这些信息。

即你可以这样做:

  1. 使用ORM类从源数据库加载数据。
  2. 将数据存储在内存中或序列化到磁盘。
  3. 使用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已经正式列出了转换工具。

http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools

我运行Mac的这个问题的解决scheme是

  1. 安装Ruby和续集类似于Macario的答案。 我跟着这个链接来帮助设置Mac OSX的 Ruby,MySQL和sqlite3 Ruby on Rails开发设置
  2. 安装续集

     $ 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/ (该网站是巴西葡萄牙语)