是否可以在Windows上使用免费工具从MySQL转换为SQLite?
答案 0 :(得分:65)
如标题中所述,脚本可以像这样使用:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
<强>替代方案强>
答案 1 :(得分:51)
以下是转换器列表:
现在链接似乎已关闭,因此只能通过snapshot at archive.org提供,最后更新时间为2011年。
即使在Windows上也可以使用的替代方法很少提及:使用ORM类来为您抽象出特定的数据库差异。例如你可以用PHP(RedBean),Python(Django的ORM层,Storm,SqlAlchemy),Ruby on Rails(ActiveRecord),Cocoa(CoreData )等等。
即。你可以这样做:
答案 2 :(得分:42)
Sequel(Ruby ORM)有一个用于处理数据库的命令行工具,你必须安装ruby,然后:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
答案 3 :(得分:18)
并非每个数据库架构都可以转换。 MySQL比SQLite更复杂,功能更丰富。但是,如果您的架构足够简单,您可以将其转储到SQL文件中并尝试将其导入/加载到SQLite DB中。
答案 4 :(得分:13)
答案 5 :(得分:5)
我找到了完美的解决方案!看看:http://www.jbip.net/content/how-convert-mysql-sqlite
首先,您需要此脚本(将其放入名为&#39; mysql-to-sqlite.sh&#39;的文件中):
#!/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
如果一切顺利,你现在应该有一个dumpfile.db,可以通过sqlite3使用。
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
答案 6 :(得分:4)
有不同的方法可以做到这一点。我也有这个问题,我搜索了很多。然后我有一个简单的方法将MySql转换为Sqlite。
请遵循以下说明:
第1步:首先需要安装SqliteDB浏览器(非常小且快速查看表和数据)
第2步:在记事本中打开MySql文件,如果在Notepad ++中打开它会很棒
第3步:删除第一个额外行包含信息或查询并保存。
第4步:在Mysql数据库中打开Sqlite Db Brower,创建数据库,然后是表格和相同类型。
第5步:在Sqlite Db浏览器的菜单栏中选择文件 - &gt;然后导入您保存的数据Mysql文件。
它会轻松转换为Sqlite After Warning对话框。
如果你的Mysql文件有错误,那么删除更多的额外行。
你也可以在试用版基础上安装Mysql到Sqlite转换器软件但我给转换的信息是生命时间。
您还可以查看本教程以获取更多帮助:https://www.youtube.com/watch?v=UcAHsm9iwpw
希望这个帮助。
答案 7 :(得分:3)
Sqlite正式列出了转换工具。
答案 8 :(得分:2)
大约2天前,当我不得不将20GB以上的MySQL数据库转换为SQLite时,我遇到了同样的问题。这绝非易事,我最终写出this Python script来完成这项工作。
用Python编写的好处是,它是跨平台的(不同于shell / bash脚本),并且具有最小的依赖关系(可以使用pip install
轻松安装)。它使用生成器和正在处理的数据的分块,因此具有很高的内存效率。
我也为correctly translate most of the datatypes from MySQL to SQLite付出了一些努力。
该脚本可通过命令行调用,但也可以用作标准Python类,您可以将其包含在更大的Python编排中。
使用方法如下:
usage: mysql2sqlite.py [-h] [-f SQLITE_FILE] [-u MYSQL_USER]
[-p MYSQL_PASSWORD] [-d MYSQL_DATABASE]
[--mysql-host MYSQL_HOST] [-c CHUNK] [-l LOG_FILE]
optional arguments:
-h, --help show this help message and exit
-f SQLITE_FILE, --sqlite-file SQLITE_FILE
SQLite3 db file
-u MYSQL_USER, --mysql-user MYSQL_USER
MySQL user
-p MYSQL_PASSWORD, --mysql-password MYSQL_PASSWORD
MySQL password
-d MYSQL_DATABASE, --mysql-database MYSQL_DATABASE
MySQL host
--mysql-host MYSQL_HOST
MySQL host
-c CHUNK, --chunk CHUNK
Chunk reading/writing SQL records
-l LOG_FILE, --log-file LOG_FILE
Log file
答案 9 :(得分:2)
将MySql DB转换为Sqlite的最简单方法:
1)为您的MySql数据库生成sql转储文件。
2)将文件上传到RebaseData在线转换器here
3)页面上将出现一个下载按钮,以Sqlite格式下载数据库
答案 10 :(得分:1)
找到MySQL WorkBench的这个插件:
http://www.henlich.de/software/sqlite-export-plugin-for-mysql-workbench/
答案 11 :(得分:1)
运行 Mac 的此问题的解决方案是
安装续集
$ gem install sequel
如果仍然需要
% gem install mysql sqlite3
然后使用以下基于续集文档bin_sequel.rdoc(参见复制数据库)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
windows 用户可以为Windows解决方案安装Ruby和Sequel。
答案 12 :(得分:1)
我在这个帖子上尝试了很多方法,但没有什么对我有用。所以这是一个新的解决方案,我也发现它非常简单:
sqlite
查询的txt文件。 就是这样,现在你有了SQLite数据库。
答案 13 :(得分:0)
非程序性答案,但为我节省了很多时间。 SQL to SQLite converter
在这里,我能够转换一个包含33个表的数据库。花了大约一分钟。
答案 14 :(得分:0)
如果您已获得数据库文件并且尚未安装正确的服务器(SQLite或MySQL),请尝试使用此工具:https://dbconvert.com/sqlite/mysql/试用版允许转换每个表的前50条记录,其余部分数据加水印。这是一个Windows程序,可以转储到正在运行的数据库服务器,也可以将输出转储到.sql文件
答案 15 :(得分:0)
从list of converter tools我找到Kexi。它是一个UI工具,可以从各种数据库服务器(包括MySQL)导入到SQLite中。当导入一些数据库(比如MySQL)时,它以Kexi格式存储它。 Kexi格式是“本机”SQLite格式。因此,只需复制kexi文件并以sqlite格式保存数据
答案 16 :(得分:0)
我喜欢Jfly建议的SQLite2009 Pro企业管理器。但是:
MySQL数据类型INT未转换为SQlite数据类型INTEGER(适用于DBeaver)
它不会从MySQL导入外键重构(我找不到任何支持从MySQL到SQlite的外键约束传输的工具。)
答案 17 :(得分:0)
如果您有经验,可以通过Perl \ Python \ etc编写简单的脚本,并将MySQL转换为SQLite。 从Mysql读取数据并将其写在SQLite上。
答案 18 :(得分:-3)
这是一个简单的转换器:http://mysql2sqlite.felipemarques.com.br/(该网站是巴西葡萄牙语)