sqlite换成mysql_从SQLITE的数据转到MYSQL

接同事需求,要求从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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习笔记(一):python入门

上周六终于开始接触心心念念的python了&#xff0c;本人学习语言算是零基础&#xff0c;java语法比较复杂&#xff0c;所以选择了一个语法相对还是比较简单&#xff0c;而且现在使用也是越来越广泛的python进行了学习。下面就言归正传吧 在学习python之前先来了解下现今比较流行…

MySQL查询优化之explain的深入解析

在分析查询性能时&#xff0c;考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面&#xff0c;用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。explain 可以帮助我们分析 select 语句,让我们知道查询效率低下的原因,从而改进我…

怎么验证proftpd安装成功_英雄联盟手游泰服安卓账号怎么注册

英雄联盟手游中泰服安卓账号怎么注册&#xff1f;泰服安卓账号的注册流程是怎样的&#xff1f;泰服安卓账号的注册与其他服安卓账号的注册是否一致&#xff1f;接下来就给介绍下手游中泰服安卓账号的注册&#xff0c;希望对各位玩家能有所帮助。英雄联盟游戏新泰服安卓账号怎样…

oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数

oracle中有decode函数&#xff0c;如下&#xff1a;select sum(decode(sex&#xff0c;男&#xff0c;0,1)) 男生数 from school&#xff1b;统计男生数目&#xff0c;含义为&#xff1a;decode()中sex字段为男时&#xff0c;用1代替&#xff0c;然后计算总和而mysql中没有该函…

mysql 删掉重复数据

--不知道为啥这个mysql外边还要包一层&#xff0c;不然就报错DELETE FROMcourse WHEREname IN ( select mm.name from (SELECTa.name as nameFROMcourse aGROUP BYa. NAMEHAVINGcount(a.NAME) > 1)mm) AND id NOT IN ( select nn.id from (SELECTmin(id) as idFROMcours…

spring中用到哪些设计模式

1.工厂模式&#xff0c;这个很明显&#xff0c;在各种BeanFactory以及ApplicationContext创建中都用到了&#xff1b; 2.模版模式&#xff0c;这个也很明显&#xff0c;在各种BeanFactory以及ApplicationContext实现中也都用到了&#xff1b; 3.代理模式&#xff0c;在Aop实现中…

visio对象放入word显示不全_办公人士必学visio技能 手把手教你使用visio绘制项目全景图!...

Hi,大家好&#xff01;我是爱踢汪。今天本汪想问问你用什么总结项目&#xff0c;Word、PPT还是视频&#xff1f;下面我们聊聊画图。画图固然是为了好看&#xff0c;视觉上的冲击加深印象。更重要的是&#xff0c;图像模型带来的“潜台词”&#xff0c;有意想不到的效果&#xf…

java 回调函数很好懂

首先先介绍回调函数的概念。比如客户端client&#xff0c;想要调用服务器端server的某个函数为你提供服务。比如炒西红柿炒蛋&#xff0c;cookTomato() 这时候&#xff0c;服务器端说&#xff0c;你先付钱才能为你服务&#xff0c;这时候服务器端要调用客户端的getMoney().才能…

mongoDB操作详细

简介 它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等 关系型数据库中有一个 "表" 的概念,有 "字段" 的概念,有 "数据条目" 的概念 MongoDB中也同样有以上…

mysql 存储过程 on_MySQL存储过程的权限问题小结

MySQL的存储过程&#xff0c;没错&#xff0c;看起来好生僻的使用场景。问题源于一个开发同学提交了权限申请的工单&#xff0c;需要开通一些权限。本来是一个很正常的操作&#xff0c;但在我来看是比较着急且紧迫的&#xff0c;说来惭愧&#xff0c;忙着方向规划和开发的事情&…

搜索引擎蜘蛛爬虫原理

permike 原文 搜索引擎蜘蛛爬虫原理 关于搜索引擎的大话还是少说些&#xff0c;下面开始正文搜索引擎蜘蛛爬虫原理&#xff1a; 1 聚焦爬虫工作原理及关键技术概述 网络爬虫是一个自动提取网页的程序&#xff0c;它为搜索引擎从Internet网上下载网页&#xff0c;是搜索引擎的重…

《Android开发艺术探索》读书笔记 (10) 第10章 Android的消息机制

第10章 Android的消息机制 10.1 Android消息机制概述 (1)Android的消息机制主要是指Handler的运行机制&#xff0c;其底层需要MessageQueue和Looper的支撑。MessageQueue是以单链表的数据结构存储消息列表但是以队列的形式对外提供插入和删除消息操作的消息队列。MessageQueue只…

mysql索引引擎_mysql搜索引擎和索引那些事

mysql的存储引擎三种存储方式**InnoDB **(默认)一个文件存储表结构&#xff0c;一个存储数据和目录(索引)# 一个文件 book_name | author| press | price | pub_date frm文件 frame的缩写# 另一个文件(数据 目录)# | 倚天屠龙记 | egon | 北京工业地雷出版社 | 70.00 | 2019-07…

SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元

【题目分析】 Matrix-Tree定理高斯消元 求矩阵行列式的值&#xff0c;就可以得到生成树的个数。 至于证明&#xff0c;可以去看Vflea King&#xff08;炸树狂魔&#xff09;的博客 【代码】 #include <cmath> #include <cstdio> #include <cstring> #include…

深度ip转换器手机版app_房串串经纪人版app下载-房串串经纪人版app手机版 v1.0.0...

房串串经纪人版app&#xff1a;专门为房产经纪人打造的辅助办公软件&#xff0c;提供的功能非常的全面&#xff0c;涵盖了房产服务过程中的各个环节&#xff0c;随时可以手机在线处理自己的日常工作&#xff0c;提高了工作的效率&#xff0c;操作很简单&#xff0c;让你更好的实…

netduino之电源参考电路MC33269DT-5.0G

手里有块netduino的板子&#xff0c;一直闲置未用&#xff0c;netduino具体是什么不知道的就百度吧&#xff0c;我这也不是主要讲netduino开发的&#xff0c;简单说就是用.net开发硬件&#xff0c;了解到netduino也是原来学过C#&#xff0c;当然我主要的工作还是嵌入式硬件开发…

汉王考勤 连接mysql_汉王考勤管理软件打开时出现:连接数据错误,请确认数据库服务器信息是否有误。这样该怎样解决?...

汉王指纹考勤系统故障答疑1. 考勤钟上的指纹记录丢失了。答&#xff1a;没有可能自己丢失&#xff0c;只可能是误删除了指纹信息&#xff0c;只能重新登录指纹。2. 在预处理时时间过长。答&#xff1a;由于用户单位的人员多&#xff0c;软件设置的班次乱等因素造成&#xff1b;…

PowerShell使用教程

一、说明 1.1 背景说明 个人对PowerShell也不是很熟悉&#xff0c;开始的时候就突然看到开始菜单中多了个叫PowerShell的文件夹&#xff0c;后来一点就看到某个教程视频说PowerShell很厉害但也没怎么听&#xff0c;再后来就看到kali也有了一些PowerShell的脚本这才意识到PowerS…

python Gunicorn

1. 简介 Gunicorn(Green Unicorn)是给Unix用的WSGI HTTP 服务器&#xff0c;它与不同的web框架是非常兼容的、易安装、轻、速度快。 2. 示例代码1 def app(environ, start_response):data b"Hello World\n"start_response("200 OK", [("Content-Type…

如何使处于不同局域网的计算机实现远程通信_小区自来水二次加压泵站远程监控系统方案...

一、小区自来水二次加压泵站远程监控系统方案项目概述随着城市高效快速地发展&#xff0c;市区规模越来越大&#xff0c;小区二次加压泵房将继续增加&#xff0c;供水公司二次加压泵房管理工作将更加繁重。目前小区二次加压供水方式主要有两种&#xff0c;一种是不锈钢水箱不锈…