DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言:
好久没写文了, 距离上一篇文章是3个月前的事了,虽然工作很忙,主要还是缺少写作的内容和激情,所以没怎么动手。
之前有一个来月不断面试不同层次来应聘的人员,很有想写文的冲动,后来还是忍住了。
估计写了也是那种说人坏话、恨铁不成钢的情绪文,没啥营养,所以情绪过了就没想写了。
在公司除了管理上的事情之外,另外也研发了一套适用信息系统的快速开发框架,这个有机会再写写文和大伙分享了。
下面言归正文了。
背景:
关于这个DBImport工具,发布的版本不多,仅有:V1.0、V2.0、V3.0、V3.2和今天发布的V3.3。
由于自己平时用到这个工具(导数据、导数据脚本、生成数据库文档)的频率并不频繁,
加上上一个版本已经很稳定,基本满足个人需求,所以更新的频率不高,从V3.0开始,一年多才发布一个版本。
此次版本更新的动力主要来自(付费或非付费)用户的需求和CYQ.Data底层框架的驱动。
下面看看历史正文:
DBImport V3.3版本更新的内容如下:
1:增加MSSQL、MySql、Oracle间的数据互导时,同时转换相关的字段说明。
PS:导数据的时候,把说明也带过去,如果你想复制公司的一个数据库,又没有导入导出备份等权限时,用这工具导就O了。
2:数据库脚本导出增加字段说明脚本。
PS:有了1,2也顺理出来了。
3:增加小数位的处理,各数据间互导时不会出现精度丢失。
PS:之前的版本在小数位上,如果需要精准导过去,需要手工处理下生成的表结构,改好小数再导,这次直接做足这方面的事了。
4:数据库文档导出增加小数位字段显示。
PS:有了3,4也顺理出来了。
5:增加N种数据类型的处理,这些数据类型可能不见常。
PS:这个说的比较泛,是因为把MSSQL的所有类型都给处理了,底层代码也改了不少,所以东西太多就用更泛的词来解释了。
6:配置项增加是否使用存储过程分页设置。
PS:由于底层CYQ.Data框架去掉Oracle的分页存储过程,对于MSSQL的分布存储过程也增加了配置项可不启用,所以软件上也多了这么个配置项。
7:配置项增加以下操作项:
A:批量插入【包含主键】
B:批量插入【忽略主键】
C:批量更新【根据主键自动识别】
D:插入或更新【根据主键自动识别】
PS:这个功能很强大,通过D选项,几乎可以实现两个数据库间的数据同步,而且重复导N次也不怕不怕了。
下载地址:http://www.cyqdata.com/download/article-detail-42517
新版上图:
分享本次版本更新遇到的问题:
1:MSSQL:
A:timestamp 类型,存储的是二进制数据,其它数据库类型是日期,需要特殊处理。
B:识别各数据库版本号,可以通过Connection对象的ServerVersion属性获取,以前竟然没在意这个字段。
C:使用SqlBulkCopy批量插入,要注意数据长度问题,如果长度被截断,会引发MSSQL服务直接挂掉,很变态的结果。
D:numeric 类型木有对应的SqlDbType。
E:当where in id(1,2,3,4,...) 表达式直接上1万时,MSSQL2000直接就超时挂了,其它版本数据库正常。
F:MSSQL2000 木有Xml字段,同样也木有max相关的东西,都需要转换其它类型处理。
G:向MSSQL数据库里插二进制数据,可以这么整:
UPDATE AllType SET b5=newid(), -- b7='<aa>dddd</aa>' a1=(SELECT * FROM OPENROWSET(BULK N'C:\Users\cyq\Pictures\ico\taobao.ico', SINGLE_BLOB) AS aa) WHERE id=1
2:SQLite:
A:如果字段为自增,那么这个字段必须为主键,而且只能存在这一个主键。
B:如果为自增加,数据库脚本关键字字义必须提前,不能后面定义,如:
正解的:
"ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
错误的:
"ID" INTEGER AUTOINCREMENT NOT NULL,
PRIMARY KEY ("ID")
C:对于GUID类型的字段,由于存储结构为16进制,所以查询比较麻烦,需要进行以下的转换后,才能进行比较查询:
string gv=BitConverter.ToString(new Guid(“509e4e37-43ed-4e3d-b3bc-1c0929f0d151”).ToByteArray()).Replace("-", "");
最后的 条件就变成where id=x'gv这串东西'
3:Access:
A:对于GUID,正常是where id='509e4e37-43ed-4e3d-b3bc-1c0929f0d151',但是这种条件只有在查询和删除时是正常的,更新的时候,还得这么写:
where id='{509e4e37-43ed-4e3d-b3bc-1c0929f0d151}' 所以有事没事都自己补加个括号吧。
4:MySql:
A:对于Text或Blob字段,不能设置为主键。
B:对于TinyInt字段,想用0-255,应该定义成:TinyInt(3) UNSIGNED
C:只能存在一个自增列,若存在,必须定义为主键。
D:(中文内容或注释)乱码问题还是去配置MySql安装目录下my.ini的编码。
5:Oracle:
A:对于设置为Not Null 属性的字段,不允许插入空值,解决的方法是插入一个空的字符串。
B:ORA-08002: 序列 SEQ1.CURRVAL 尚未在此会话中定义,这个问题需要先调用SEQ1.nextval。
C:对于where id in(1,2,3,4,5...) 最大表达式为1000,超过这个数,需要分拆成where id in(1,2,..1000) or id in(1001,1002...2000)...
D:批量执行多条语句时,一般可以用:
begin 语句1; 语句2; 语句3; end;
但是也有用不了的时候,比如语句是comment on column 表.字段 is 说明。解决的方法是分折成一条一条执行了。
总结:
无!
Thanks~~~
DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)的更多相关文章
- DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...
- DBImport v3.5 中文版发布:数据库定时同步及文档生成工具(IT人员必备)
前言: 趁着最近的休息时间,只能多勤快些:多写代码,多更新文章. 因为一旦投入新的工作,估计博客又会恢复到一年才产几篇的状态. 对于DBImport,因为用户的意见,增加了一个亮点功能,让软件B格升为 ...
- 基于Mybatis的Mysql数据库文档生成工具,支持生成docx(原创)
今天不写android--也写写数据库相关的东西 -------------------- 今日老夫闲来无事,设计了一款数据库文档生成工具 眼下仅仅支持mysql 主要是生成docx的 下载链接:下载 ...
- DBCHM -最简单、最实用的数据库文档生成工具
项目介绍 DBCHM 是一款数据库文档生成工具! 该工具从最初支持chm文档格式开始,通过开源,集思广益,不断改进,又陆续支持word.excel.pdf.html.xml.markdown等文档格式 ...
- 【C#附源码】数据库文档生成工具支持(Excel+Html)
[2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...
- 【C#附源码】数据库文档生成工具支持(Excel+Htm)
数据库文档生成工具是用C#开发的基于NPOI组件的小工具.软件源码大小不到10MB.支持生成Excel 和Html 两种文档形式.了解更多,请访问:http://www.oschina.net/cod ...
- 最简单,最实用的数据库CHM文档生成工具——DBCHM
DBCHM支持SqlServer/MySql/Oracle/PostgreSQL等数据库的表列批注维护管理. DBCHM有以下几个功能 表,列的批注可以编辑保存到数据库. 表,列的批注支持通过pdm文 ...
- 数据库文档生成工具——word2chm,SqlSpec
首先使用代码生成器可以生成word版本的数据库文档. 转成chm格式的更加小巧和方便~ SqlSpec是个好工具,可以生成所有数据库相关的信息 之后可以一键生成chm文档.
- tbls ci 友好的数据库文档化工具
tbls 是用golang 编写的数据库文档化工具,当前支持的数据库有pg.mysql.bigquery 此工具同时提供了变更对比.lint 校验,生成是markdown格式的 简单使用 安装 mac ...
随机推荐
- javascript 框架、根基技巧、布局、CSS、控件 JavaScript 类库
预筹备之 JavaScript 今朝支流的 JavaScript 框架排名中,jQuery 和 Ext 可算是佼佼者,得到了用户的普遍好评.海内的一些框架许多也是模仿 jQuery 对 JavaScr ...
- javaScript事件(一)事件流
一.事件 事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字.事件是javaScript和DOM之间的桥梁.你若触发,我便执行——事件发生,调用它的处理函数 ...
- list for循环中删除元素
Iterator.remove() is safe, you can use it like this: List<String> list = new ArrayList<> ...
- VisualSVN Server的配置和使用方法(转)
1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Serve ...
- #英文#品读中国城市个性——秦汉雄风&和祖先在一起
妨碍 interfere with 仇恨 hatred 坍塌 collapse 专制君主 autocratic dictator 排除异己 suppress opposition 被逼到绝望边缘 b ...
- OpenGL帧缓存对象(FBO:Frame Buffer Object)(转载)
原文地址http://www.songho.ca/opengl/gl_fbo.html 但有改动. OpenGL Frame BufferObject(FBO) Overview: 在OpenGL渲染 ...
- pyqt的信号槽机制(转)
PySide/PyQt Tutorial: Creating Your Own Signals and Slots This article is part 5 of 8 in the series ...
- url中的特殊字符问题
在 使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误.在有些传递页面使用GB2312, 而在接收页面使用UTF8,这样接收到的参数就可能会 ...
- 【Python装饰者】在函数测试的作用
[引言] 我们经常需要多函数进行耗时测试,测试方法有许多,这里介绍装饰者的方法,提高耗时测试代码的可复用性,在其他方面的应用也是如此. [设计原则] 类应该对扩展开放,对修改关闭. [代码] (1)定 ...
- 巴特沃斯(Butterworth)滤波器 (2) - 双线性变换
这里接着上篇讲一下双线性变换Bilinear Transformation,它实现了模拟信号(连续域)与数字信号(离散域)之间的转换. 双线性变换公式如下: 反推可得到: 因此可以根据连续域传递函数推 ...