分类: Mysql/postgreSQL
2009-05-31 13:34:05
一、从ORACLE到MySQL
最初设计的单位信息系统,工作平台时使用的是Windows环境,工作站跑98,服务器跑2000,因为对MySQL并不熟悉,所以数据库选用的是ORACLE。
三年前开始准备向linux开发环境过渡,正好当时单位有许多新业务要向局域网上移植,网络上的业务量大大增加,老服务器速度太慢,于是新购置一台服务器,联想T280,装机的时候我就直接装上了红旗linux的操作系统,数据库就使用了系统里带的MySQL。
在Windows环境中我的开发工具是C++Builder,数据库接口用的是开发工具里带的BDE。使用ORACLE时,BDE里直接有ORACLE的驱动, 使用MySQL时稍稍麻烦一点,BDE里没有直接对MySQL的驱动,但可以通过ODBC的方式和MySQL连接。首先安装MySQL官方的ODBC驱动 程序,然后在控制面板的数据源里添加系统DSN,把MySQL服务器加进去,添加成功之后,在BDE里就会看到刚才添加的DSN,程序访问MySQL就通 过这个DSN来完成。
之后就是程序的修改。从ORACLE转向MySQL的程序移植比较突出的问题有两个:一是数据表的名称大小写问题,二是函数问题。
在送往ORACLE服务器的SQL语句中,数据表名的大小写是不敏感的,SQL语句大小写的区别仅仅是为了美观,但在Linux上的MySQL里,大写 和小写的表名称含义却不一样,“TABLE”和“table”在ORACLE里表示的同一个表,但在MySQL里它们是两个不同的表。
函数问题比较突出的一个是关于日期的函数。在程序里许多地方的操作都与日期有关,ORACLE中用到日期的SQL语句中一般都是这么 写:to_date('2009-02-03','yyyy-mm-dd'),在MySQL中却可以直接这么写:‘2009-02-03’,取系统日期的 函数在ORACLE中是sysdate,在MySQL中则是curdate()。其它的函数因为用的比较少,所以矛盾并不突出。
把这两个问题解决之后,程序就可以正常运行了。当时的移植并没有一步到位,采用了逐步过渡的方法,有些数据表放在ORACLE里,有些数据表放在MySQL里,共用了一段时间后,才完全移植到MySQL上。
ChinaUnix-ITpub网站MySQL技术征文大赛
作者:IT168 sundp70