首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将MySQL数据库导出到SQLite数据库

将MySQL数据库导出到SQLite数据库
EN

Stack Overflow用户
提问于 2011-03-02 14:10:20
回答 7查看 83.3K关注 0票数 86

请帮助我将MySQL数据库导出到SQLite数据库。

EN

回答 7

Stack Overflow用户

发布于 2012-12-14 10:00:01

有一个将Mysql转换为Sqlite3文件的fantastic Linux shell script on Github。您的服务器上需要同时安装mysqldump和sqlite3。效果很好。

票数 77
EN

Stack Overflow用户

发布于 2016-09-05 03:23:32

由@quassy编辑的@user2111698的答案如承诺的那样工作。由于我经常这样做,所以我将它们的指令放入bash脚本中:

代码语言:javascript
复制
#!/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上找到

票数 8
EN

Stack Overflow用户

发布于 2014-08-01 22:57:13

前一篇文章中提到的mysql2sqlite.sh不能很好地处理主键行,它不会编写尾随的)来完成CREATE语句。

这就是我所做的。我以如下方式运行mysql转储:

代码语言:javascript
复制
mysqldump --skip-create-options --compatible=ansi --skip-extended-insert --compact --single-transaction -h<host> -u<user> -p<passwd> <database name> > localdb.txt

然后我使用grep删除主键和键:

代码语言:javascript
复制
cat localdb.txt | grep -v "PRIMARY KEY' | grep -v KEY > localdb.txt.1

然后我使用一个编辑器来修复这个文件。删除键后,您将得到一条CREATE语句,如下所示:

代码语言:javascript
复制
CREATE ...
  ...,
)

必须删除尾随的,。在vi中,此表达式与它们匹配,,$\n)

然后,您需要将所有\'更改为''

然后,您可以进行导入:

代码语言:javascript
复制
sqlite3 local.sqlite3 < localdb.txt.1

就是这样。我还没有找到一个适合我的程序。我希望这对某些人有帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5164033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档