欢迎来到天天文库
浏览记录
ID:21243177
大小:54.00 KB
页数:3页
时间:2018-10-20
《找到一种不错的从sqlserver转成mysql数据库的方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、找到一种不错的从SQLServer转成Mysql数据库的方法>>教育资源库 年初的时候一直在做一个网站MSSQL2000->MySQL5的迁移工作,因为采用了不同的程序系统,所以主要问题在数据的迁移。由于2个系统数据库结构差异非常大,不方便采取SQLSERVER里导入MYSQL的ODBC数据源的功能(也不推荐这么做,字段类型等不同点会搞死人的~),因此就在YSQL里面,灵活也比较方便。实际过程主要有下面几个问题: 1、数据库的连接,主要是连接SQLSERVER。主要有3种方法: 1.1利用PHP中的mssql_系列函数,这个与使用my
2、sql_系列函数类似,不过要打开php.ini中相关扩展(extension=php_mssql.dll)。 1.2利用ODBC连接,由于抽象了具体数据库,所以没有办法利用数据表字段名=>数组键名的特性,在针对具体应用时不是很方便,代码形式:$conn=odbc_connect(datasource,username,passneething} 1.3使用PDO-PHP5中加入数据对象抽象层,作为官方推出的数据访问接口,优点有很多,比如支持参数绑定以防止SQL注入;对于不同数据库加载不同驱动即可,程序代码是一致的,便于移植等等,相信应该
3、是大势所趋。不过由于用了PHP5全新的面向对象特性,需要PHP5的支持,5.1可以直接使用,5需要装PECL,另外还要修改PHP.ini,增加:extension=php_pdo_mysql.dll和extension=php_pdo_mssql.dll,实际代码如下:try{ $DBH=nessql:dbname=XXX;host=localhost, root,passt=$DBH->prepare(SELECT*FROMnetHandle$stmtif($stmt->execute()){ t->fetch()){
4、 //dosomething }}$stmt2=$mssql->prepare(INSERTINTOnet2->bindParam(':title',$title);$stmt2->bindParam(':author',$author);$stmt2->execute();$DBH=null;//CloseConnection这里要提醒下的是MSSQL里面是没有MYSQL中LIMIT这个语法的。 2、TEXT字段被截断的问题。 上面尝试了3种连接数据库方法,是因为当初连上MSSQL
5、后SELECT出来的数据总是只有4K长度,以为是连接方式限制导致的,所以换了几种都是这样,最后查了资料才知道,是php.ini里面这2句配置的问题:;Validrange0-2147483647.Default=4096.mssql.textlimit=4096;Validrange0-2147483647.Default=4096.mssql.textsize=4096 把4096改成-1(代表无限制)即可,也可以使用mssql_query(SETTEXTSIZE65536);来实现。 3.两种数据库字段类型不同的问题有2个地方需要讲一下,
6、一个是字段支持最大长度要注意,以免插入数据库时候被截断,另外一个就是日期格式的问题了,我比较喜欢用UNIX时间戳。在连MSSQL时候可以用selectunix_timestamp(created)fromnenee($timestring){ if($timestring==null){ return 0; } $time=explode(,$timestring); $year=$time[0]; se[1]){ case一月:$month=1;break; case二月:$month=2;break; cas
7、e三月:$month=3;break; case四月:$month=4;break; case五月:$month12下一页>>>>这篇文章来自..,。=5;break; case六月:$month=6;break; case七月:$month=7;break; case八月:$month=8;break; case九月:$month=9;break; case十月:$month=10;break; case十一月:$month=11;break; case十二月:$month=12;break
8、; default:break; } $day=$time[2]; $h=0; $m=0; $s=0; if(!emp
此文档下载收益归作者所有