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


小编给大家分享一下sqlite3迁移mysql可能遇到的问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题列表1、sqlite3 dump出的各种变量在mysql不识别,如(BEGIN TRANSACTION、COMMIT等等)2、sqlite数据数据无法导出隐藏字段rowid3、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,description2、解决单引号、双引号问题 运行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问题,根据需要可以对脚本进行修改以上是“sqlite3迁移mysql可能遇到的问题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注开发云行业资讯频道!

相关推荐: 怎么修改mysql的端口号

怎么修改mysql的端口号?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。怎么修改mysql的端口号1.在mysql安装目录下找到my.ini文件,并用记事本打开2.Ctrl+F 查…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/19 20:10
下一篇 06/19 20:11

相关推荐