请帮助我将MySQL数据库导出到SQLite数据库。
发布于 2012-12-14 10:00:01
有一个将Mysql转换为Sqlite3文件的fantastic Linux shell script on Github。您的服务器上需要同时安装mysqldump和sqlite3。效果很好。
发布于 2016-09-05 03:23:32
由@quassy编辑的@user2111698的答案如承诺的那样工作。由于我经常这样做,所以我将它们的指令放入bash脚本中:
#!/bin/bash
mysql_host=localhost
mysql_user=george
mysql_dbname=database
sqlite3_dbname=database.sqlite3
# dump the mysql database to a txt file
mysqldump \
--skip-create-options \
--compatible=ansi \
--skip-extended-insert \
--compact \
--single-transaction \
-h$mysql_host \
-u$mysql_user \
-p $mysql_dbname \
> /tmp/localdb.txt
# remove lines mentioning "PRIMARY KEY" or "KEY"
cat /tmp/localdb.txt \
| grep -v "PRIMARY KEY" \
| grep -v KEY \
> /tmp/localdb.txt.1
# mysqldump leaves trailing commas before closing parentheses
perl -0pe 's/,\n\)/\)/g' /tmp/localdb.txt.1 > /tmp/localdb.txt.2
# change all \' to ''
sed -e 's/\\'\''/'\'''\''/g' /tmp/localdb.txt.2 > /tmp/localdb.txt.3
if [ -e $sqlite3_dbname ]; then
mv $sqlite3_dbname $sqlite3_dbname.bak
fi
sqlite3 $sqlite3_dbname < /tmp/localdb.txt.3
包含详细评论的要点可在https://gist.github.com/grfiv/b79ace3656113bcfbd9b7c7da8e9ae8d上找到
发布于 2014-08-01 22:57:13
前一篇文章中提到的mysql2sqlite.sh不能很好地处理主键行,它不会编写尾随的)
来完成CREATE语句。
这就是我所做的。我以如下方式运行mysql转储:
mysqldump --skip-create-options --compatible=ansi --skip-extended-insert --compact --single-transaction -h<host> -u<user> -p<passwd> <database name> > localdb.txt
然后我使用grep删除主键和键:
cat localdb.txt | grep -v "PRIMARY KEY' | grep -v KEY > localdb.txt.1
然后我使用一个编辑器来修复这个文件。删除键后,您将得到一条CREATE语句,如下所示:
CREATE ...
...,
)
必须删除尾随的,
。在vi中,此表达式与它们匹配,,$\n)
然后,您需要将所有\'
更改为''
然后,您可以进行导入:
sqlite3 local.sqlite3 < localdb.txt.1
就是这样。我还没有找到一个适合我的程序。我希望这对某些人有帮助。
https://stackoverflow.com/questions/5164033
复制相似问题