滕州网站建设企业,生成器软件,网站建设优化服务策划,什么网站可以做片头接同事需求#xff0c;要求从SQLITE的数据转到MYSQL#xff0c;这东西以前也没接触过。这里搜搜#xff0c;那里试试#xff0c;下面把过程列一下。主要过程分三步#xff1a;1#xff0c;把SQLITE表结构导出来#xff0c;作一定的格式调整2#xff0c;把SQLITE数据导出…接同事需求要求从SQLITE的数据转到MYSQL这东西以前也没接触过。这里搜搜那里试试下面把过程列一下。主要过程分三步1把SQLITE表结构导出来作一定的格式调整2把SQLITE数据导出来作特殊字符的处理3导出MYSQL(注意字符集)[more]下面是我操作的过程 有两个部分单表操作和批量处理(含脚本)########### 单表操作 ##################### 打开SQLITE DBroot sqlite3 mig.db# 查看表,可用用.help获得帮助sqlite.tables# 导出数据表结构sqlite.output /tmp/heyf/createtable.sqlsqlite.schema accounts_profile# 调整建表语句格式, 把双引号去掉并加上MYSQL的建表约束。rootsed s///g createtable.sql create_onmysql.sqlrootsed -i -e s/^);$/) engineinnodb default charsetutf8 collateutf8_bin ;/g create_onmysql.sqlrootsed -i s/integer.*PRIMARY KEY/int NOT NULL auto_increment PRIMARY KEY/g create_onmysql.sql# sqlite中为 INTEGER PRIMARY KEY 的字段将自动增加rootsed -i s/ text/ longtext/g create_onmysql.sql# sqlite中text 最大长度为2G, 在MYSQL中需要改成longtext;# 在MYSQL把表建上mysql -uroot -h127.0.0.1 --default-character-setutf8 test create_onmysql.sql# 导出数据sqlite.mode insert accounts_profile_starred_review_requestssqlite.output /tmp/heyf/accounts_profile_starred_review_requests.sqlsqliteselect * from accounts_profile_starred_review_requests;sqlite.output stdout# 处理特殊字符DOTABLEaccounts_profile_starred_review_requestscd /tmp/heyfDOFILE${DOTABLE}.sqlsed -e s///g $DOFILE ${DOFILE}.new# 将数据导入MYSQLmysql -uroot -h127.0.0.1 --default-character-setutf8 test -e truncate table ${DOTABLE};mysql -uroot -h127.0.0.1 --default-character-setutf8 test ${DOFILE}.new如果表很多那我们就需要批量处理一下啦下面是一些批量脚本 ########### 批量处理 ##################### 打开SQLITE DBroot sqlite3 mig.db# 查看表sqlite.tables# 把所有表名都放入TABLE.LIST文件# 导出数据表结构sqlite.output /tmp/heyf/createtable.sqlsqlite.schema accounts_profilesqlite.schema ... ....#在MYSQL 创建表结构rootsed s///g createtable.sql create_onmysql.sqlrootsed -i -e s/^);$/) engineinnodb default charsetutf8 collateutf8_bin ;/g create_onmysql.sqlrootsed -i s/integer.*PRIMARY KEY/int NOT NULL auto_increment PRIMARY KEY/g create_onmysql.sql# sqlite中为 INTEGER PRIMARY KEY 的字段将自动增加rootsed -i s/ text/ longtext/g create_onmysql.sql# sqlite中text 最大长度为2G, 在MYSQL中需要改成longtext;rootmysql -uroot -h127.0.0.1 --default-character-setutf8 test /tmp/heyf/create_onmysql.sql# SQLITE 中导出数据## 将所有的表生成导出语句(SQLITE)## cat create_exp.sh-------------------------#!/bin/bash[ $# -ne 1 ] exit 1TABFILE$1WORKDIR/tmp/heyf/dmpfile/OUTFILEexp.sqlwhile read LINEdoecho $LINEecho .mode insert $LINE $OUTFILEecho .output $WORKDIR/${LINE}.sql $OUTFILEecho select * from $LINE ; $OUTFILEecho .output stdout $OUTFILEdone $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 1TABFILE$1WORKDIR/tmp/heyf/dmpfile/while read DOTABLEdocd $WORKDIRDOFILE${DOTABLE}.sqlsed -e s///g $DOFILE ${DOFILE}.newdone $TABFILE-------------------------## sh replace.sh table.list## 将数据导入MYSQL## cat imp.sh-------------------------#!/bin/bash[ $# -ne 1 ] exit 1TABFILE$1WORKDIR/tmp/heyf/dmpfile/while read DOTABLEdocd $WORKDIRmysql -uroot -h127.0.0.1 --default-character-setutf8 test -e truncate table ${DOTABLE};mysql -uroot -h127.0.0.1 --default-character-setutf8 test ${DOTABLE}.sql.newdone $TABFILE-------------------------## sh imp.sh table.list