sqlite转换成MySQL迁移及一键sqlite转MySQL软件

下列是我从网上搜集并做的一个整理,若有未提及地方请指出:从sqlite数据库导入到mysql数据库实例从sqllite中导出数据文件库XX.sql的文件。导入到mysql数据库中。键入命令: source /smb/works/mysql.sql出现很多如下的错误:You have an error in your SQL syntax; check the manual thatcorresponds to your MariaDB server version for the right syntax to use near XXXXXXXXX原因是sqllite与mysql语句有很大的区别:左边为MYSQL、右边为SQLite1、启动事务Mysql 为start transactionSqlite 为 begin transaction2、提交事务Mysql 为commitSqlite 为commit transaction因此需要移除所有的 [BEGIN TRANSACTION] [COMMIT] 以及 任何包含 [sqlite_sequence] 的(整)行3 创建表Mysql的库名、表名、列明等都不需要使用[ ]sqlite 所有的名称都需要增加[ ]4、数据类型sqlite的数据类型mysql都支持。但是sqlite中定义了范围在mysql中导入会报错。只有varchar需要定义范围。5、冲突解决SQLite 的 ONCONFLICT子句不是独立的SQL命令。这是一条可以出现在许多其他SQL命令中的非标准的子句。在Mysql中不支持。6、引号将 ["] 改为 [`]也可以移除全部的 ["] ,但是如果有一些函数名作为字段名(e.g. regexp)时将会遇到错误需要注意一些默认为 ["] ,其作用不在字段上的,不应被替换而应当被保留7、将所有 [autoincrement] 改为 [auto_increment]8、将所有 ['f'] 改为 ['0'] 并将所有 ['t'] 改为 ['1']或者['False']改为['0']及['True']改为['1']9、text字段不能设置unipue,需改为varchar(255)10、注意sqlite是不区分类型的,所以有些整形字段和text字段要修改配合mysql。11、默认设为CURRENT_TIMESTAMP的字段类型一定为TIMESTAMP。另外还有其他可能不同的字段类型在导入sql报错时候可以百度解决将修改完的sql文件保存,然后通过工具导入到mysql中即可。参考原文:https://www.2cto.com/database/201604/501991.html          https://blog.csdn.net/duomoke/article/details/48246229当然最后来个最简单sqlite转MySQL方法,可以使用sqliteToMysql软件一键转换,只需要选择原db地址及目标MySQL地址即可,下载链接如下(有内购 不过可以免费试用):链接:https://pan.baidu.com/s/18mEN4JfHffseYf9N3GCeyA 提取码:9vv9

pgsql中能用to_date表示详细时间么?怎么表示具体时间段

    在Oracle中选择具体时间区间只需将字符用to_date进行转换成时间即可。但是在postgresql中是不是发现没效果咯?!    测试发现pgsql中的to_date真的是将时间转换成日期,而非精确到分秒,如下sql:select * from LOG a  where  a.CREATE_TIME >= to_date('2019-01-08 00:00:00','yyyy-MM-dd HH24:mi:ss') and a.CREATE_TIME <= to_date('2019-01-08 16:30:43','yyyy-MM-dd HH24:mi:ss')这样写虽然具体时间不一样,但是由于转换的是日期因此两实际时间在pgsql中是一样的,这种情况只需要将to_date改成to_timestamp即可,以后注意pgsql中to_date返回的是日期,非具体时间。

Could not set parameters for mapping: ParameterMapping{property='param'错误

mybatis中出现这样错误,Could not set parameters for mapping: ParameterMapping{property='param'问题原来出在xml中,由于#号修饰的变量加了引号所致,问题如下:select  code from sys_code where codename = '#{area}'解决方法也很简单,将引号去掉或者改为$,#{area}自带引号