很久没写文了, 距离上一篇文章是3个月前的事了,虽然工做很忙,主要仍是缺乏写做的内容和激情,因此没怎么动手。面试
以前有一个来月不断面试不一样层次来应聘的人员,颇有想写文的冲动,后来仍是忍住了。数据库
估计写了也是那种说人坏话、恨铁不成钢的情绪文,没啥养分,因此情绪过了就没想写了。框架
在公司除了管理上的事情以外,另外也研发了一套适用信息系统的快速开发框架,这个有机会再写写文和大伙分享了。 工具
下面言归正文了。ui
关于这个DBImport工具,发布的版本很少,仅有:V1.0、V2.0、V3.0、V3.2和今天发布的V3.3。编码
因为本身平时用到这个工具(导数据、导数据脚本、生成数据库文档)的频率并不频繁,spa
加上上一个版本已经很稳定,基本知足我的需求,因此更新的频率不高,从V3.0开始,一年多才发布一个版本。3d
这次版本更新的动力主要来自(付费或非付费)用户的需求和CYQ.Data底层框架的驱动。code
下面看看历史正文: 对象
PS:导数据的时候,把说明也带过去,若是你想复制公司的一个数据库,又没有导入导出备份等权限时,用这工具导就O了。
PS:有了1,2也顺理出来了。
PS:以前的版本在小数位上,若是须要精准导过去,须要手工处理下生成的表结构,改好小数再导,此次直接作足这方面的事了。
PS:有了3,4也顺理出来了。
PS:这个说的比较泛,是由于把MSSQL的全部类型都给处理了,底层代码也改了很多,因此东西太多就用更泛的词来解释了。
PS:因为底层CYQ.Data框架去掉Oracle的分页存储过程,对于MSSQL的分布存储过程也增长了配置项可不启用,因此软件上也多了这么个配置项。
PS:这个功能很强大,经过D选项,几乎能够实现两个数据库间的数据同步,并且重复导N次也不怕不怕了。
下载地址:http://www.cyqdata.com/download/article-detail-42517
新版上图:
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数据库里插二进制数据,能够这么整:
A:若是字段为自增,那么这个字段必须为主键,并且只能存在这一个主键。
B:若是为自增长,数据库脚本关键字字义必须提早,不能后面定义,如:
C:对于GUID类型的字段,因为存储结构为16进制,因此查询比较麻烦,须要进行如下的转换后,才能进行比较查询:
string gv=BitConverter.ToString(new Guid(“509e4e37-43ed-4e3d-b3bc-1c0929f0d151”).ToByteArray()).Replace("-", "");
最后的 条件就变成where id=x'gv这串东西'
A:对于GUID,正常是where id='509e4e37-43ed-4e3d-b3bc-1c0929f0d151',可是这种条件只有在查询和删除时是正常的,更新的时候,还得这么写:
where id='{509e4e37-43ed-4e3d-b3bc-1c0929f0d151}' 因此有事没事都本身补加个括号吧。
A:对于Text或Blob字段,不能设置为主键。
B:对于TinyInt字段,想用0-255,应该定义成:TinyInt(3) UNSIGNED
C:只能存在一个自增列,若存在,必须定义为主键。
D:(中文内容或注释)乱码问题仍是去配置MySql安装目录下my.ini的编码。
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:批量执行多条语句时,通常能够用:
可是也有用不了的时候,好比语句是comment on column 表.字段 is 说明。解决的方法是分折成一条一条执行了。
无!
Thanks~~~