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(&#8220;509e4e37-43ed-4e3d-b3bc-1c0929f0d151&#8221;).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 说明。解决的方法是分折成一条一条执行了。


总结:

时间也不早了,明天还得上班,得下了,对于仗义留言给32个赞支持的哥妹姐弟:

这两天只要将软件上的联系作者(Tab)下的本地信息发往联系信息下的邮箱地址,将有概率获得随机送出的软件注册码。

Thanks~~~

 



     本文转自cyq1162 51CTO博客,原文链接:http://blog.51cto.com/cyq1162/1421297,如需转载请自行联系原作者



相关文章
|
2月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
2月前
|
存储 监控 数据处理
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
186 61
|
6天前
|
SQL 程序员 Linux
推荐几个不错的数据库设计工具
推荐几个不错的数据库设计工具
58 11
|
2天前
|
SQL 存储 运维
从建模到运维:联犀如何完美融入时序数据库 TDengine 实现物联网数据流畅管理
本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品。文章从一个具体的业务场景出发,分析了企业在面对海量时序数据时的挑战,并提出了利用 TDengine 高效处理和存储数据的方法,帮助企业解决在数据采集、存储、分析等方面的痛点。通过这篇文章,作者不仅展示了自己对数据处理技术的理解,还进一步阐释了时序数据库在行业中的潜力与应用价值,为读者提供了很多实际的操作思路和技术选型的参考。
14 1
|
6天前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
9天前
|
前端开发 JavaScript 数据库
获取数据库中字段的数据作为下拉框选项
获取数据库中字段的数据作为下拉框选项
37 5
|
2月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
162 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
2月前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
2月前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
10天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
35 3