设为首页 收藏本站
查看: 708|回复: 0

[经验分享] Access转出到Mysql,咱自己动手丰衣足食.. -- 纯JS代码

[复制链接]

尚未签到

发表于 2016-10-23 10:49:35 | 显示全部楼层 |阅读模式
  公司的网站做的差不多了,可是没有找到测试数据,真够郁闷的,就想到了 Access罗思文数据库.
  
  可是机器上装的是WPS,没有装Access. 而且罗思文里面东西太多,很难搞.
  
  郁闷死我了,又往下找,找到了以前某出版社的书序目录数据库,
  使用mdbview这个小软件一看,呵呵.里面只有一个表: books.还有4000多条记录.
  太爽了. ... 问题出现了,我怎么把它弄到Mysql里面呢???? 这个倒来倒去的很麻烦啊
  
  想到这里,先想到的是使用PHP来做,我一向使用的是FLEAPHP框架,很愁人的是没有这个驱动库提供.
  又想到了PHP的 ADODB这个开源库.下了一个,很郁闷,感觉是很强,但是远水解不了近渴啊,
  偶估计等我把他那英文文档看明白了,天也要黑了....
  所以一票否决使用PHP来搞...
  
  接着想到了JAVA,以前好像学过JAVA提供的JDBC驱动,想到啊,不错啊... 结果很快报异常....时间都浪费在
  调异常上面了.... 花了我一刻钟 ... 真的很郁闷. ..
  
  偶然想到ASP不是挺能搞Access的么? 找来找去那玩意都需要运行环境来支持.....
  
  郁闷的不行,突然想到了IE上实现Ajax的代码,创建ActiveXObject对象,我当时就在想这个对象不知道能不能在本地跑啊.
  因为系统里面已经带了脚本运行时环境.... 三分钟后,哈哈可以啊,竟然可以在本地....
  
  接着看到还支持文件系统的读写,叫一网友发了一本ASP的老书,仔细看了看ADO的语法,呵呵呵.还真行...
  一会儿就OK了,但是还是有问题存在,妈妈的,幸亏我看的懂VB的语法,不然还真不能换成JS来实现....原来ASP换能使用JS
  来写,日 第一次知道....
  
  闲话少说,贴代码了. 这里仅仅贴出JS怎么将Access里面的数据存到本地的文件的功能.... 具体导出到MYSQL的做法
  你们自己想了,反正很简单....
  

function ShowDriveInfo1(drvPath)
{
var fso, drv, s ="";
fso = new ActiveXObject("Scripting.FileSystemObject");
drv = fso.GetDrive(fso.GetDriveName(drvPath));
s += "Drive " + drvPath.toUpperCase()+ " - ";
s += drv.VolumeName + "<br>";
s += "Total Space: " + drv.TotalSize / 1024;
s += " Kb" + "<br>";
s += "Free Space: " + drv.FreeSpace / 1024;
s += " Kb" + "<br>";
writeFile(s);
}
var fso = new ActiveXObject("Scripting.FileSystemObject");;
var outdb = fso.CreateTextFile("testfile.txt", true);;
//ShowDriveInfo1('d:',true);
function writeFile(s)
{
outdb.WriteLine(s);     
}

var cn = new ActiveXObject("ADODB.Connection") ;
var result = new ActiveXObject("ADODB.Recordset");
cn.Open("FILEDSN=books.dsn");
writeFile(cn);
/*
设置或返回游标服务的位置,防止返回记录数为-1
有疑问的是 为什么要设值为3呢??
3表示使用由本地游标库提供的客户端游标,而缺省是服务端设置
result.MoveLast(); //行集不支持反向取
*/
result.CursorLocation = 3;  
var sql = 'select * from books' ;
result.Open(sql,cn);
writeFile('exec sql : ' + sql);
writeFile('result.RecordCount : ' + result.RecordCount);
var fields = {
objID: result("ID"),
objBookCode: result("BookCode"),
objBookName: result("BookName"),
objPrice: result("Price"),
objAuthor: result("Author"),
objBooksPerPack: result("BooksPerPack"),
objYear: result("Year"),
objISBN: result("ISBN"),
objOther: result("Other")
};

for (var i=0;i< result.RecordCount  ; i ++)
{
var tmpss = '' ; //每次都要置空,刚才没有注意,3秒钟就跑到了580M.
for (field in fields)
tmpss += fields[field] + '\t\t' ;
writeFile(tmpss);
result.MoveNext();
}
result.Close();
cn.Close();
outdb.Close();
fso = null ;
  
  这里看看这个运行结果吧:

写道

Provider=MSDASQL.1;Extended Properties="DBQ=D:\book.mdb;DefaultDir=D:\;Driver={Driver do Microsoft Access (*.mdb)};DriverId=281;FIL=MS Access;FILEDSN=books.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
exec sql : select * from books
result.RecordCount : 4351
1 TP68150 Linux 系统管理指南 46 吴东霞等 7 2001 750536815X null
2 TPAA0230 Linux工具集 55 王军 等 5 2004 7120000233 null
3 TN004770 Linux网络入侵检测系统 25 刘文涛 9 2004 7121004771 null
4 TP96260 Linux系统安全——开放源码安全工具管理员指南(第二版) 48 周元兴译 5 2004 7505396269 null
5 TP92970 嵌入式Linux——硬件、软件与接口 35 陈雷译 9 2003 7505392972 null
6 TP96610 Red Hat Linux实用指南 88 孙天泽译 3 2004 7505396617 null
7 TP64770 红旗Linux 网络管理教程 28 中科红旗 9 2001 7505364774 null
8 TP75450 Windows XP 注册表配置详解 25 韩江 8 2002 7505375458 null
9 TP74710 Windows 98 2000 Me XP 注册表大全 31 郝强 8 2002 7505374710 null
10 TP91960 精通注册表修改与编程 Windows 98/Me/2000/XP 29 郝强 7 2003 7505391968 nul
  
  通过这次偶真的有感而发,在IE中调试JS很麻烦,但是在本地写JS脚本那个报错就要明确的多啊....很快就挑好了
  
  这里出现了个很搞的东西:

var tmpss = '' ; //每次都要置空,刚才没有注意,3秒钟就跑到了580M.
因为我刚开始把它放到for循环的外面了,运行过后,打开一看,提示打开很大文件,我想不对啊?没有多大啊
我还是放到桌面上的,一会我感觉不对劲,想把它删了,结果提示正在运行,赶快结束了那个进程... 一查属性
 
乖乖,578M. 不到三秒的时间 , 好险啊...
 
大家注意啊... 改下用来 恶意下别人机器也是挺好玩的....
 
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-290188-1-1.html 上篇帖子: sam's teach yourself Sql in 24hours的范例数据库表格Mysql版本。 下篇帖子: mysql left( right ) join使用on 与where 筛选的差异
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表