文档章节

H2 script STRINGDECODE

wonder365
 wonder365
发布于 2013/02/18 17:47
字数 367
阅读 781
收藏 4
H2

MYSQL 导出 到 H2

近期想将开发中系统的数据库随身携带,以便随时学习。最好的办法当然是将数据库随身携带,所以想到了导出到H2中。H2的压缩模式很厉害,在MYSQL中1G左右的空间,压缩后占用6、7M。非常适合将数据导出H2中随时启动以查看表结构。
由于MYSQL的导出SQL不标准,无法直接导入到H2中,所以我写了如下脚本将将MYSQL转化为H2脚本。

mysqldump --add-drop-table=FALSE --add-locks=FALSE --lock-tables=FALSE --quote-names=FALSE --set-charset=FALSE --comments=FALSE -uroot -proot riil_product > mysql.sql
sed '/^\/\*!.*\*\/;/d;s/[ ]*ENGINE=.*DEFAULT[ ]CHARSET=[^ ^;]*[ ]*//g;s/double(\([0-9]*\),\([0-9]*\))/number(\1,\2)/g;s/ON UPDATE CURRENT_TIMESTAMP//g;s/ USING BTREE//g;/^\/\*!/,/\*\//d;/^SET/d;' mysql.sql|sed '/CREATE TABLE \([^ ]*\) (/{h};/^)COMMENT=/{G;s/\n//;s/^.*COMMENT=\([^;]*\)[;]*CREATE TABLE \([^ ]*\) ($/);\nCOMMENT ON TABLE \2 IS \1;/}' > h2.sql
其中最主要的是将表的COMMENT转化为H2格式,如:

CREATE TABLE IF NOT EXISTS `tb_log` (
  `a_time` timestamp NOT NULL COMMENT '操作时间'
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='审计日志';
/*!40101 SET character_set_client = @saved_cs_client */;
-- 转化为 --
CREATE TABLE tb_log (
  a_time datetime NOT NULL COMMENT '操作时间',
);
COMMENT ON TABLE t_admin_audit_log IS '审计日志';

导出H2脚本STRINGDECODE解决

当导出H2时,所有中文变为STRINGDECODE,不方便查看,且不易导入到其它数据库中,可以修改H2代码来进行修正(建议生成补丁JAR文件,优先加载到classpath,方便以后删除),函数位置:org.h2.util.StringUtils.quoteStringSQL(String),将“else if (c < ' ' || c > 127)”分支删除即可。



© 著作权归作者所有

共有 人打赏支持
wonder365
粉丝 2
博文 7
码字总数 3238
作品 0
海淀
私信 提问
鼠标事件界面转换 mouseover() 方法

mouseover() 方法

潜心笃志
2017/09/18
0
0
Dojo mobile初学者求帮忙解释

使用的是最新的Dojo1.10 代码如下: HelloAndroid 面团 First Section This is my first dojo Mobile application on android platform. Second Section List Item 1 List Item 2 List Item......

wzhw
2015/03/30
228
1
Jquery选择器

Jquery选择器允许开发者对HTML元素组或单个元素进行操作,主要分为以下三类 所有的选择器都以美元符号$()开头   一、元素选择器     Jquery元素选择器基于元素名选择元素。如选择页面中...

shptc
2017/06/23
0
0
Jquery工作常用实例——Ajax load函数的使用

jQuery 的 load 函数是一种简单的(但很强大的)AJAX 函数。它的语法如下: $(selector).load(url,data,callback),使用 selector 来定义要改变的 HTML 元素,使用 url 参数来指定数据的 we...

Adam-Lee
2011/07/16
0
0
easyui1.3 的tabs中放kindeditor 点击"全屏"整个屏幕都是白屏

index.html页面代码: GUAGUA-MINICMS GUAGUA MINI-CMS GUAGUA FOOTER content2 content2 content3 文章管理 Title5 Title6 请操作相关菜单栏 观看使用说明,请点击 article.html(里面包含k...

anx
2012/08/20
2.5K
4

没有更多内容

加载失败,请刷新页面

加载更多

JVM 中的守护线程

特点 通常由JVM启动 运行在后台处理任务,比如垃圾回收等 用户启动线程执行结束或者JVM结束时,会等待所有的非守护线程执行结束,但是不会因为守护线程的存在而影响关闭。 判断线程是否为守护...

小刀爱编程
15分钟前
1
0

参考 极客时间《数据结构与算法之美》

grace_233
28分钟前
2
0
谈谈KMP算法

KMP算法的资料网上已经一大把了,主要用来解决某个文本片段是否包含另一个子串问题。这里假设文本片段的长度n大于子串长度m,如: 文本串为ABCDABGHIJK 子串为 ABCDABE 在传统的暴力解法中当...

FAT_mt
29分钟前
3
0
NEO改进协议提案9(NEP-9)

文章目录 摘要 动机 详述 原生资产转移URI URI键 可用URI 键 映射 NEO 交易属性键 参考原生资产地址 例子 智能合约调用URI NEP-5 token 转移 URI Keys 例子 原理 实现 参考 摘要 本NEP描述了...

NEO-FANS
31分钟前
1
0
Canvas学习:globalCompositeOperation详解

  在默认情况之下,如果在Canvas之中将某个物体(源)绘制在另一个物体(目标)之上,那么浏览器就会简单地把源特体的图像叠放在目标物体图像上面。      简单点讲,在Canvas中,把图像...

SEOwhywhy
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部