在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

sqlite3迁移mysql可能遇到的问题有哪些

119次阅读
没有评论

共计 2096 个字符,预计需要花费 6 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 sqlite3 迁移 mysql 可能遇到的问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

问题列表

1、sqlite3 dump 出的各种变量在 mysql 不识别,如(BEGIN TRANSACTION、COMMIT 等等)

2、sqlite 数据库数据无法导出隐藏字段 rowid

3、sqlite 数据库数据导出格式与其他数据库不兼容, 如单引号、双引号问题

4、导出的 sqlite 数据不带列名,如下 INSERT INTO protocol VALUES(大类页(新),)。我们可能需要的是 INSERT INTO protocol(text1 , text2)VALUES(大类页(新), 刷新页)

5、特殊符号处理,如转义符 \

6、表字段长度限制不一样

7、数据量写入效率问题

问题解决

首先不能使用 sqliteStudio、Navicat 等工具,这里采用 shell 命令的方式,直接避免一下内容生成,

  BEGIN TRANSACTION

  COMMIT

  CREATE UNIQUE INDEX

  PRAGMA foreign_keys=OFF

同时使用 shell 方式可以用很少的代码量实现。

1、解决字段列名没有输出问题

  运行 sqlite3 命令“pragma table_info(表名);“得到以下输出内容

  0|name|TEXT|0||0

  1|description|TEXT|0||0

  再通过字符串替换得到列名,如下:

  假设变量为 COLS = name,description

2、解决单引号、双引号问题

  运行 sqlite3 命令“  .mode insert .dump 表名“得到如下输出内容

  INSERT INTO 表名 VALUES(test , test

  INSERT INTO 表名 VALUES(test , test

  INSERT INTO 表名 VALUES(test , test

  以这种方式可以解决单引号双引号问题,这里直接统一输出单引号

3、解决 sqlite3 默认字段 rowid 无法显示问题,这里直接将 rowid 改为 id

  将当前模式设置为.dump insert 模式

  运行 sqlite3 命令“select rowid as id,$COLS from 表名“得到如下输出

  INSERT INTO 表名 VALUES(1, test , test

  INSERT INTO 表名 VALUES(2, test , test

  INSERT INTO 表名 VALUES(3, test , test

4、通过 shell 字符串命令,将之前得到的列名添加到以下 sql 语句

修改后如下:

  INSERT INTO 表名(name , description)VALUES(1, test , test

  INSERT INTO 表名(name , description)VALUES(2, test , test

  INSERT INTO 表名(name , description)VALUES(3, test , test

5、转义符处理

如果数据库里的数据存在转义符, 如:{\ lastname\ :\\ 天津 \\}。这种数据如果不处理,那么将数据 insert 到数据库时会变成 {lastname :\ 天津 \}。所以需要对转义符做下处理,用 shell 命令处理很简单,如命令:sed s#\\#\\\\#g
方案实现

此脚本主要解决了以上 1~5 问题,根据需要可以对脚本进行修改

 #!/bin/sh
 SQLITE=sqlite3
 if [ -z  $1  ] ; then
 echo usage: $0 sqlite3.db
 exit
 fi
 DB= $1 
 TABLES=` $SQLITE   $DB  .tables`
 for TABLE in $TABLES ; do
 CREATE=` $SQLITE   $DB   SELECT sql FROM sqlite_master WHERE type=\ table\  AND name = \ $TABLE\ `
 echo $CREATE  |
 cut -d =  -f2 |
 sed  s/^CREATE TABLE $TABLE (/CREATE TABLE $TABLE (id int auto_increment primary key ,/g 
 COLS=` $SQLITE   $DB   pragma table_info($TABLE)  | cut -d |  -f2 `
 COLS_CS=`echo $COLS | sed  s/ /,/g `
 echo  .mode insert \n.header on \n select rowid as id,$COLS_CS from $TABLE;\n  |
  $SQLITE   $DB  |
 sed  s/^INSERT INTO \ table\ /INSERT INTO $TABLE /g  |
 sed  s#\\#\\\\#g 
 done

以上是“sqlite3 迁移 mysql 可能遇到的问题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计2096字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产精品亚洲аv无码播放 国产精品亚洲成在人线 | 天堂中文资源网 | 久久老色鬼天天综合网观看 | 最新中文字幕在线播放 | 黑人巨大无码中文字幕无码 | 青青草原国产在线观看 | 一本一本久久a久久综合精品 | 久久99久久99 | 人妻精品久久久久中文字幕69 | 看一下毛片 | 男人的天堂在线免费视频 | 亚洲欧美日韩人成在线播放 | 日本中文字幕第一页 | 97香蕉碰碰人妻国产欧美 | 日韩黄色一级毛片 | 国产激情精品一区二区三区 | 国产精品亚洲欧美大片在线观看 | 欧美日韩一区二区三区视频播 | 国产美女做爰免费视频网址 | 精品丝袜人妻久久久久久 | 中文字幕无码视频专区 | 很黄的网站在线观看 | 日本中文字幕有码在线视频 | 精品国产污污免费网站入口 | 可以看黄色软件 | 小蜜被两老头吸奶头在线观看 | 97天天操 | 熟妇激情内射com | 四虎在线观看一区二区 | 美女视频黄色软件 | 亚洲精品天堂 | 天天天色综合 | 中文字幕av无码一区二区三区 | 成人看片在线观看免费 | 久久精品99久久香蕉国产色戒 | 亚洲欧洲色天使日韩精品 | 亚洲自偷自偷在线成人网站传媒 | 久热这里只有精品99国产6 | 亚洲国产精品综合久久网各 | 亚洲国产精品高清在线一区 | 国产精品19禁在线观看 |