CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 发布

[Tip:2011-05-19 14:55左右修正个别Bug后重新上传了一下,之前下载的新重新下载。]

 

杂七几句:

自从购买VPS之后,打算将 秋色园QBlog 搬迁,也想把目前的Access数据库换成其它数据库。

由于VPS只有512M内存,装完系统都快300M,跑MSSQL2005太吃力,所以就不装了。

刚好系统默认装了MySql,于是就打算在MySql中跑一下。

 

秋色园QBlog 一开始就用上了CYQ.Data 的多数据库解析标签,能解析各数据库的差异化代码或函数。

所以更换数据库是几乎是0成本的,代码是不用动的,唯一要想的就是怎么生成MySql的表结构和把数据导过去。

 

于是自然第一反应就是上网搜“Access导数据到MySql”的工具:

1:好不容易下了一个,安装后默认带插件导航网页,只能说一声RI,然后马上卸了,还得手动删除插件文件,这个纠结。

2:再后来,搜到一个小巧的工具,看似能导,导了几条数据后就没反应了,结果一看,是个Demo版本,这下更纠结了。

3:再之后,寻到了“Navicat for MySQL”,用它导数据,3万多文章给我导不见了2万多,特纠结。

不过有个好处,就是帮着生成了表结构,可惜这表结构也不实在,只能凑和,数据类型对不上号,还得自己大大的改一下:

看原来的Bit生成后变成其它类型,就顺手把MySql也改成Bit,结果发现数据导不进去了,因为Access是true/false,MySql是1/0,报数据长度too long,本来文章就丢了很多,这又来个类型不对称,纠结中带点压抑。

4:问以前同事有没有什么好工具,同事说,你还是自己写代码吧。没折,就决定自己写代码了。

 

刚好 CYQ.Data 的MDataTable已实现了批量插入[不带自增ID]和批量更新功能[按需更新]。

 

想着,把它扩展一下,增加带ID的插入,就成了批量导数据功能了:

于是开始忙碌的敲代码,做测试,在各个数据库间转来复去,折腾了几天,虽然中间被一些问题卡住了很久,比如MySQL的字符集问题,不过还是终见成果了。

批量导入功能实现后,写了个DOS版本工具,用于批量把整个数据库数据从Access导到MySQL中。

之后让秋色园在MySQL跑了一圈,遇到了不少MySql的问题,如动则就十几或几十秒的查询,太过异常,发动群众测试之后:

发现是默认配置问题,需要把内存配置上去,修改my.ini增加内存后,速度也正常上去了。

可惜VPS内存不多,和MySql耗不起,只好作罢,于是顺路把数据导到SQLite、Oracle、Sql2000下也跑了一圈。

修正了个别函数解析后,全部正常运行,SQLite下发现速度和Access没啥差别,Oracle下需要增加索引,速度才正常。

目前:秋色园示例版本:http://demo.cyqdata.com/ 运行在Sql2000的数据库下。

不过秋色园目前仍运行在Access数据库版本中。

 

此时,CYQ.Data 的MDataTable已具备了批量导数据工具,按说来应该很强大了。

 

接着之后几天似乎“领域驱动”挺热的,于是又产生了一个想法:

让CYQ.Data也“驱动”一下,若从MDataTable的Columns列结构,可以反向生成不同数据库的表结构,这样在使用CYQ.Data开发的时候,就可以做到“Code First”了,可以不用优先考虑数据库问题。

再接着,又转来复去在各数据库间,调优代码,数据类型转换,测试,生成,示例,代码,修改,再测试,一堆又一堆,又花了几天,终于也完成了,CYQ.Data 强大的反向工程功能也完成了。

 

为了更方便的使用,于是花了一个晚上写了个 CYQ.DBImport 工具,再花了一天调试代码,终于也就有了以下的内容:

 

主功能介绍:

 

1:数据库反向工程功能

可以从任意 CYQ.Data 支持的数据库,生成其它数据库脚本。

目前支持的数据库:Access、Sql2000/2005/2008、Oracle、MySql、Sqlite。

 

2:批量导数据功能

可以从任意数据库中将数据导向另一个数据库。

由于具有反向生成其它数据库脚本功能,因此会自动检测是否存在指定表:

若表不存在,则自动创建表;

若表存在,则直接导入数据。

 

界面及使用介绍:

 

1:双击运行,见:主界面

说明:

1:DBConnection From:从哪个数据库导数据。

2:DBConnection To    :把数据导向哪个数据库。

 

2:输入DBConnection From的数据库链接,点击链接Connect

说明:

ReadMe:有各种数据库链接示例Demo,不用担心不会写。

Tables:数据库的表

(Un)Check All:对表的全选和反选。

 

3:[可选步骤]选择ViewDBSql,查看反向生成的表脚本,若不满意,还可以自己修改。

 

A:从Mssql的Blog_File表生成Access表结构的截图

 

B:从Mssql的Blog_Visit表生成MySql表结构的截图

说明:

1:点击左右的表,再选择右侧的DalType,就可以看到生成不同的表结构。

2:Execute DBSql:可以执行任意SQL语句,默认不可用,把DBConnection To的链接字符串填上,

点击Connect成功后就恢复可用状态。

 

4:填写DBConnection To的数据库链接,点击链接:Connect

说明:

链接成功后:Execute DBSqlImport Go[导数据]恢复可用状态。

 

5:选择要导数据的表,根据需要勾选[Import By Pager],点击“Import Go”,开始导数据

说明:

1:Import By Page:是指分页查询并导数据,如果数据量很大,最好是采用这种方式进行,否则默认一次性读取所有数据后再进行插入时,读数据时就卡死了。

2:根据说明,分页导数据时,若DBConnection From的链接为Mssql/Oracle数据库,则需要有CYQ.Data相应的分页存储过程,具体可以到上面提示的网址上找,新近刚发布了,秋色园和博客园都有。

 

6:批量导数据库完成了,提示完成

 

总结:

本工具是基于CYQ.Data 数据框架完成的,欢迎使用与关注CYQ.Data

 

CYQ.DBImport 下载地址http://www.cyqdata.com/download/article-detail-426

 

其它附加哆嗦几句:





1:不要问源码,该发布时会发布。



2:开源!=免费,不清楚的先上网看下相关资料,当然,没开源也不一定是收费的。



3:索要源码时,问下自己,你都贡献了什么?别只知索取,人家上辈子应该没欠你什么,需要你今生苦苦的追索或漫骂。







 

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2011/05/19/2050632.html

时间: 2024-09-18 07:39:30

CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 发布的相关文章

CYQ.IISLogViewer 一款IIS 日志分析工具 V1.0 发布[提供源码]

说几句:      昨天在 秋色开源团队  群里和网友聊天,有网友提到了一个概念,做站需要知道的:分析IIS日志.      然后上网找了一下资料看了下,可是 秋色园 寄放在人家虚拟目录的子目录中,根本没有IIS日志可言,于是昨晚就直接把秋色园移往新购买的VPS,正式搬到传说中的赌城"拉斯维加斯"去了,中间出了不少问题,折腾到夜里4点.      于是目前 秋色园 所在的地址就是"拉斯维加斯"了,不过数据库仍是用的Access. 下面进正题,于是自己跑IIS看了一下

sqlserver 批量数据替换助手V1.0版发布_实用技巧

这种方法操作繁琐,而且一般不是很懂数据库的人很难操作.于萌发了要写一个小程序的念头,经过两天时间的折腾这个小软件终于和各位见面了,希望各位童鞋多给点意见.说了这么些之后还是先上界面吧,^..^ 现在就来说说这个小程序的开发思路吧.第一步:通过 sp_helpdb系统存储过程得到SqlServer中的所有数据库名称. 复制代码 代码如下: #region 测试数据库连接,并显示数据库列表 /// <summary> /// 测试数据库连接,并显示数据库列表 /// </summary>

使用ssh远程执行命令批量导出数据库到本地(转)

  前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户

linux下使用ssh远程执行命令批量导出数据库到本地_linux shell

前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户是限

asp中利用数组实现数据库记录的批量录入方法

数据|数据库|数组 asp中利用数组实现数据库记录的批量录入方法(原创) 演示:http://www.zwtd.com/1/yanek/n/needdj2.asp <% rem 文章题目 asp中利用数组实现数据库记录的批量录入方法(原创)作者:yanek联系email:aspboy@263.net%> 包括两个文件 1.allneeddj.asp:实现表单的生成 2. allneeddjresult.asp 处理表单批量录入 3.hbedu.mdb :数据库文件 其数据库结构如下 provi

MS SQLServer 批量附加数据库

************************************************************ * 标题:MS SQLServer 批量附加数据库 * 说明:请根据下面的注释使用此脚本 * 时间: 2015/7/13 11:16:41 ************************************************************/ USE MASTER GO IF OBJECT_ID('[sp_AttchDataBase]') IS NOT N

asp中利用数组实现数据库记录的批量录入方法(原创),有演示,建议入精华

精华|数据|数据库|数组|原创 asp中利用数组实现数据库记录的批量录入方法(原创)演示:http://www.zwtd.com/1/yanek/n/needdj2.asp<%rem 文章题目 asp中利用数组实现数据库记录的批量录入方法(原创)作者:yanek联系email:aspboy@263.net%> 包括两个文件1.allneeddj.asp:实现表单的生成2. allneeddjresult.asp 处理表单批量录入3.hbedu.mdb :数据库文件其数据库结构如下provinc

MYSQL批量插入数据库实现语句性能分析

  假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCHAR( 50 ) NOT NULL, other_value VARCHAR( 50 ) NOT NULL ) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example (example_id, name, value, other_valu

批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor

原文:批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPROMPT5.3对各种加密对象的解密测试 SQL2005解密已经被加密的存储过程 昨天ahdung 童鞋介绍了这个工具给我,非常感谢他 dbForge SQL Decryptor这个工具的软件公司是dev