接同事需求,要求从SQLITE的数据转到MYSQL,这东西以前也没接触过。这里搜搜,那里试试,下面把过程列一下。

主要过程分三步:

1,把SQLITE表结构导出来,作一定的格式调整

2,把SQLITE数据导出来,作特殊字符的处理

3,导出MYSQL(注意字符集)[@more@]

下面是我操作的过程, 有两个部分:单表操作和批量处理(含脚本)

########### 单表操作 ####################

# 打开SQLITE DB

root> sqlite3 mig.db

# 查看表,可用用".help"获得帮助

sqlite>.tables

# 导出数据表结构

sqlite>.output /tmp/heyf/createtable.sql

sqlite>.schema accounts_profile

# 调整建表语句格式, 把双引号去掉,并加上MYSQL的建表约束。

root>sed 's/"/`/g' createtable.sql > create_onmysql.sql

root>sed -i -e 's/^);$/) engine=innodb default charset=utf8 collate=utf8_bin ;/g' create_onmysql.sql

root>sed -i 's/integer.*PRIMARY KEY/int NOT NULL auto_increment PRIMARY KEY/g' create_onmysql.sql

# sqlite中,为 INTEGER PRIMARY KEY 的字段将自动增加

root>sed -i 's/ text/ longtext/g' create_onmysql.sql

# sqlite中,text 最大长度为2G, 在MYSQL中需要改成longtext;

# 在MYSQL把表建上:

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < create_onmysql.sql

# 导出数据

sqlite>.mode insert accounts_profile_starred_review_requests

sqlite>.output /tmp/heyf/accounts_profile_starred_review_requests.sql

sqlite>select * from accounts_profile_starred_review_requests;

sqlite>.output stdout

# 处理特殊字符

DOTABLE=accounts_profile_starred_review_requests

cd /tmp/heyf

DOFILE=${DOTABLE}.sql

sed -e "s///g" $DOFILE > ${DOFILE}.new

# 将数据导入MYSQL

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test -e "truncate table ${DOTABLE};"

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < ${DOFILE}.new

如果表很多:那我们就需要批量处理一下啦,下面是一些批量脚本 :

########### 批量处理 ####################

# 打开SQLITE DB

root> sqlite3 mig.db

# 查看表

sqlite>.tables

# 把所有表名都放入TABLE.LIST文件

# 导出数据表结构

sqlite>.output /tmp/heyf/createtable.sql

sqlite>.schema accounts_profile

sqlite>.schema ... ....

#在MYSQL 创建表结构

root>sed 's/"/`/g' createtable.sql > create_onmysql.sql

root>sed -i -e 's/^);$/) engine=innodb default charset=utf8 collate=utf8_bin ;/g' create_onmysql.sql

root>sed -i 's/integer.*PRIMARY KEY/int NOT NULL auto_increment PRIMARY KEY/g' create_onmysql.sql

# sqlite中,为 INTEGER PRIMARY KEY 的字段将自动增加

root>sed -i 's/ text/ longtext/g' create_onmysql.sql

# sqlite中,text 最大长度为2G, 在MYSQL中需要改成longtext;

root>mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < /tmp/heyf/create_onmysql.sql

# SQLITE 中导出数据

## 将所有的表生成导出语句(SQLITE)

## cat create_exp.sh

-------------------------

#!/bin/bash

[ $# -ne 1 ] && exit 1

TABFILE=$1

WORKDIR=/tmp/heyf/dmpfile/

OUTFILE=exp.sql

while read LINE

do

echo $LINE

echo ".mode insert $LINE" >> $OUTFILE

echo ".output $WORKDIR/${LINE}.sql ">> $OUTFILE

echo "select * from $LINE ;" >> $OUTFILE

echo ".output stdout " >> $OUTFILE

done < $TABFILE

-------------------------

## 运行后将产生 sqlite 所有表的导出语句

sh create_exp.sh table.list

## 现在进行SQLITE可以将所有表的数据导出来。

sqlite3 /home/admin/foryunfei/heyf.db

.read /tmp/heyf/exp.sql

# 处理特殊字符

## 现在需要将所有的SQL文件中的""替换成”“,以使SQL能正确执行

## cat replace.sh

-------------------------

#!/bin/bash

[ $# -ne 1 ] && exit 1

TABFILE=$1

WORKDIR=/tmp/heyf/dmpfile/

while read DOTABLE

do

cd $WORKDIR

DOFILE=${DOTABLE}.sql

sed -e "s///g" $DOFILE > ${DOFILE}.new

done < $TABFILE

-------------------------

## sh replace.sh table.list

## 将数据导入MYSQL

## cat imp.sh

-------------------------

#!/bin/bash

[ $# -ne 1 ] && exit 1

TABFILE=$1

WORKDIR=/tmp/heyf/dmpfile/

while read DOTABLE

do

cd $WORKDIR

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test -e "truncate table ${DOTABLE};"

mysql -uroot -h127.0.0.1 --default-character-set=utf8 test < ${DOTABLE}.sql.new

done < $TABFILE

-------------------------

## sh imp.sh table.list

sqlite换成mysql_从SQLITE的数据转到MYSQL相关推荐

  1. mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中

    FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...

  2. sqlserver2000换成mysql_将SQL Server 2000数据导入到MySQL 5.5的方法

    一.安装MySQL 5.5(可以与SQL Server不在同一台服务器上),并新建一个空的数据库(一般用utf-8编码),用于接收导入的数据. 二.在SQL Server的服务器上安装mysql-co ...

  3. oracle 数据导入 mysql_将oracle的数据导入到mysql的三种方法

    为了生产库释放部分资源,需要将API模块迁移到MysqL中,及需要导数据. 尝试了oracle to MysqL工具,迁移时报错不说,这么大的数据量,用这种简陋的工具不大可靠. 意外发现平时用的数据库 ...

  4. ssm框架sql换成MySQL_搭建ssm框架,可实现登录和数据展示以及增删改查

    需求: 后台使用ssm(spring-springMVC-mybatis)进行整合 前台使用bootstrap框架 前后台交互使用Ajax进行发送 表结构: 登录页面后显示所有用户信息,可对每条进行增 ...

  5. 两部手机怎样才能把数据都传过来_我把魅族换成荣耀,30G的数据文件该如何一键转移?...

    换手机最麻烦的一步莫过于转移资料,虽然现在很多同品牌手机有账户设置,可以新旧手机转移数据,但是不同品牌的手机在转移手机数据的"一键换机"并不兼容,所以导出数据依旧很麻烦. 小智在一 ...

  6. sqlserver2000换成mysql_将Microsoft SQL Server 2000数据库转换成MySQL数据库

    1. 下载并安装MyODBC.(如果是XP请下载5.3的旧版本,8.x的新版本运行有问题) 2. 创建一个空的MySQL数据库. 3. 在Windows >> 控制面板 >> ...

  7. mongodb里的集合数据迁移到mysql库

    1,在mongodb上导出数据,写个脚步expmongo.sh,shell脚本如下 <span style="color:#333333"><span style ...

  8. mangodb迁移数据至mySQL_MongoDB里的集合数据迁移到MySQL库

    1,在mongodb上导出数据,写个脚步expmongo.sh,shell脚本如下 #!/bin/sh datestr=`date '+%Y-%m-%d'` /usr/local/mongodb/mo ...

  9. Android 绿豆通讯录【 SQLite数据库(增删改查、展示数据) + ListView数据展示控件(展示所有数据) 】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

最新文章

  1. docker 僵尸进程解决方案 Baseimage-docker,胖容器和“容器也是虚拟机”
  2. POJ 1637 Sightseeing tour(最大流)
  3. 数据预处理:原始数据集快速分类的方法,numpy的使用技巧,数据的row=mask的column
  4. Django 聚合查询
  5. ServletActionContext.getRequest().getSession() 和 ActionContext.getContext().getSession()的区别
  6. MVC 无法将带 [] 的索引应用于“System.Dynamic.DynamicObject”类型的表达式
  7. vue 全局函数的 定义与任意调用 (代码篇)
  8. PHP简单方法判断文件是否是图片 PHP best way to check if file is an image
  9. php-fpm进程的用户组,PHP中的“进程”系列1——PHP-FPM模型
  10. 孙子兵法吃鸡之地形篇
  11. python sys模块详解_python中os和sys模块的区别与常用方法总结
  12. css3美话网页元素
  13. 海马模拟器linux,Droid4X Mac版-海马玩模拟器Mac版下载 V0.8.3Beta-PC6苹果网
  14. 小白 Linux 云计算怎么学,都要学什么?---超详细---
  15. 看了我的 mybatis-plus 用法,全公司同事开始悄悄模仿了。。
  16. Javascript 10进制转16进制补0 ,16进制转10进制
  17. 太阳能充电器带数显功能有什么用处?
  18. 搭建web服务器访问网页
  19. 网站下载工具httrack Mac使用方法
  20. 简单的3.3V与5V之间电平相互转换的电路

热门文章

  1. Java反射xml数据类
  2. 面试问题整理笔记系列 一 Java容器类
  3. linux 系统下配置java环境变量
  4. js 数组遍历for..in弊端
  5. MySQL5.6 更改字段属性仍旧会锁全表,注意这个坑!
  6. bigquery_在BigQuery中链接多个SQL查询
  7. 数据挖掘—朴素贝叶斯分类算法(Java实现)
  8. 软件测试测试用例编写_不要先编写所有软件测试-只需编写一个
  9. podcast播客资源_为什么播客是我的新维基百科-完美的非正式学习资源
  10. 了解React Native中的不同JavaScript环境