五行缺
首 页 | 生活在成都 | 音乐o | 转载 | 技术文档
关于各种数据库之间数据转换的一点思考
  实践出真知!前两天,在涉足一个网站改版的时候发现,数据库需要跨平台转换,从access转换成mysql,从windows平台到linux平台!上网找了一堆工具,什么mysql-font,acc2sql也找了,可是,发现其中很多问题,最主要的就是乱码问题,各种数据库由于操作平台以及各种语言习惯的问题,设置了不一样的编码,一般使用的access数据库,基本上是中文gb2312,mysql一般是utf-8,这只是一般的,还有特殊的,可能会是其它的编码!access是windows平台的,mysql跨平台,不过,一般情况下都在linux下面使用.

  现在很多程序员很多web制作员都会遇到数据库转换问题,跨平台的最麻烦了!windows平台里面的还好,但是,一样的有网站制作后的地址转换问题,301可以转换url防止404页面出现,但是,长期来看,301转换并不是最佳方式[当然这是另外的话题,此文主要在数据库转换方面做一下探讨].在四年的web建站生涯中,总结出以下一套数据转换模式,理论上适用于所有数据库的转换,包括跨平台!

  工作要求:access数据库转mysql

  说明:数据库名字,access:old.mdb,无用户名密码直接访问

  mysql:数据库名字:newdb,用户名默认,密码默认

  准备活动:能正常读取access的web程序[以iis做服务器,asp读取access],能正常读取mysql的web程序[以apache为服务器,php读取mysql]

  old.mdb里面有表guest[网友留言],字段:id[自动增长],ftitle[留言标题],content[内容]

  newdb,里面有表ly[留言],字段:id[自动增长],ftitle[留言标题],content[内容]

  现在在iis里面制作一个asp页面,正常读取id,ftitle,content,然后把它做成一个url,比如change.php?id=[id+1]&p=id-ftitle-content,最后做一个redirect.这里的第一个id主要是方便在php插入mysql数据后,返回下一个id值,继续读取.

  下面到apache里面去,写一个change.php,读取$_request["id"]和$_request["p"],再用explode把p值分开成ftitle和content,把这ftitle和content插入mysql数据库,至于怎么样插入不是本文讨论的重点了.结束后,再做一个参数$url,值就取前面iis里面的那个文件名再加参数$_request["id"],由于在asp里面已经加1了,所以,这里就不用加1后再传回去了!当然,这里就要保证插入数据正常而且不乱码了,理论上参数设置好了后,这个地方的插入就应该不会乱码了,还有,这里的编码和你在转换后的mysql数据库使用web程序或者其它程序使用的编码一致就行了!

  循环读取下去后就可以把一个access里面的所有数据读入新的数据库了.

  可行性分析:由于通过url传递值,url编码不涉及到平台,不涉及到语言,参数传递过去直接用相应的web代码写入数据库,理论上是可以通过的!

  --------------------------以下一部分不涉及数据库转换---------------------------

  可能有的网友注意到了,前面我读取出来的id只用来做为参数读取下一行值,我前面也提到了301转换和404页面的问题,那么,我这里也顺便讨论一下网站在改版升级过程的url问题,很多时候数据库扩容升级,都会导致一个关键参数id的更换,一个原来的id为100,转换后可能就变成了id为1了,原来的访问页面可能是?id=100,后来的就变成了?id=1,这种情况如何避免?

  这个关键的id,我们可不可以让他不关键呢?可是,id不关键怎么行呢?所以,还得想其它方法!

  我们可以考虑,在升级后的网站里面不通过id这个关键字读取,在转换数据库的时候,把原来的id写入新的数据库的其它字段的值,那么在读取时就读取这个新的字段值,缺点就是要在新的系统里面多加一个字段!

  这种方法在mssql转access的时候可能会用得到!其它的暂没想到什么地方可以用得到
2008-12-03 16:48:27|阅读全文(0)
最近更新
友情链接

网站简介 ┊ About goad ┊ goad English ┊ 联系我 ┊ 广告服务
蜀ICP备12017742号-2 www.goad.com.cn, www.2g63.cn, www.goad.net.cn
五行缺 CopyRight © 2015 ~ 2022