位置: 编程技术 - 正文

找到一种不错的从SQLServer转成Mysql数据库的方法(找到一款)

编辑:rootadmin
年初的时候一直在做一个网站MSSQL -> MySQL5的迁移工作,因为采用了不同的程序系统,所以主要问题在数据的迁移。由于2个系统数据库结构差异非常大,不方便采取SQL SERVER里导入MYSQL的ODBC数据源的功能(也不推荐这么做,字段类型等不同点会搞死人的~),因此就在WINDOWS下自己写PHP脚本从SQLSERVER里读数据,然后按照新系统的需要处理之后插入MYSQL里面,灵活也比较方便。实际过程主要有下面几个问题: 1、数据库的连接,主要是连接SQL SERVER。主要有3种方法: 1.1 利用PHP中的mssql_系列函数,这个与使用mysql_系列函数类似,不过要打开php.ini中相关扩展(extension=php_mssql.dll)。 1.2 利用ODBC连接,由于抽象了具体数据库,所以没有办法利用数据表字段名=>数组键名的特性,在针对具体应用时不是很方便,代码形式: $conn = odbc_connect("datasource","username","password"); $sql = "select * from news"; $cur= odbc_exec($conn, $sql); while(odbc_fetch_row($cur)){ $field1 = odbc_result($cur,1); $field2 = odbc_result($cur,2); //do something } 1.3 使用PDO - PHP5中加入数据对象抽象层,作为官方推出的数据访问接口,优点有很多,比如支持参数绑定以防止SQL注入;对于不同数据库加载不同驱动即可,程序代码是一致的,便于移植等等,相信应该是大势所趋。不过由于用了PHP5全新的面向对象特性,需要PHP5的支持,5.1可以直接使用,5需要装PECL,另外还要修改PHP.ini,增加:extension=php_pdo_mysql.dll和extension=php_pdo_mssql.dll,实际代码如下: try { $DBH=new PDO("mssql:dbname=XXX;host=localhost", "root", "password");//Connect to DB } catch (PDOException $e) { print "Error!: " . $e->getMessage();//Error Message die(); } $stmt = $DBH->prepare("SELECT * FROM news");//Stmt Handle $stmt if ($stmt->execute()) { while ($row = $stmt->fetch()) { //do something } } $stmt2 = $mssql->prepare("INSERT INTO news (title,author) VALUES (:title, :author)"); $stmt2->bindParam(':title', $title); $stmt2->bindParam(':author', $author); $stmt2->execute(); $DBH = null;// Close Connection这里要提醒下的是MSSQL里面是没有MYSQL中LIMIT这个语法的。 2、TEXT字段被截断的问题。 上面尝试了3种连接数据库方法,是因为当初连上MSSQL后SELECT出来的数据总是只有4K长度,以为是连接方式限制导致的,所以换了几种都是这样,最后查了资料才知道,是php.ini里面这2句配置的问题: ; Valid range 0 - . Default = . mssql.textlimit = ; Valid range 0 - . Default = . mssql.textsize = 把改成-1(代表无限制)即可,也可以使用mssql_query("SET TEXTSIZE ");来实现。 3.两种数据库字段类型不同的问题有2个地方需要讲一下,一个是字段支持最大长度要注意,以免插入数据库时候被截断,另外一个就是日期格式的问题了,我比较喜欢用UNIX时间戳。在连MSSQL时候可以用 "select unix_timestamp(created) from news" 来实现MSSQL里面DATETIME到MYSQL里时间戳的转换。不过迁移时候一次要提取表中所有字段,像上面这种方法就没有简单的"select * from news"简洁,需要罗列所有字段。实际可以直接SELECT出来,得到的是一个字符串,比如在MSSQL里面是-- :,取出来的字符串是" 一月 :"(有些奇怪,不知道为什么会产生中文)。用下面这个函数可以转换成时间戳: function ConvertTime($timestring){ if($timestring == null){ return 0; } $time = explode(" ",$timestring); $year = $time[0]; switch ($time[1]){ case "一月":$month = "1";break; case "二月":$month = "2";break; case "三月":$month = "3";break; case "四月":$month = "4";break; case "五月":$month = "5";break; case "六月":$month = "6";break; case "七月":$month = "7";break; case "八月":$month = "8";break; case "九月":$month = "9";break; case "十月":$month = "";break; case "十一月":$month = "";break; case "十二月":$month = "";break; default:break; } $day = $time[2]; $h = 0; $m = 0; $s = 0; if(!empty($time[3])){ $time2 = explode(":",$time[3]); $h = $time2[0]; $i = $time2[1]; } //return date("Y-m-d H:i:s",mktime($h,$i,$s,$month,$day,$year)); return mktime($h,$i,$s,$month,$day,$year); }最后转换脚本写完了可以在CMD窗口里面用php.exe abc.php来执行,这种方式是没有超时时间的,适合迁移大批量数据。 基本上就是这些内容,希望对大家有帮助。 Update(//):关于时间戳的转换,在php.ini中加上 mssql.datetimeconvert = Off 后就能得到类似-- :不带有中文的格式了。

推荐整理分享找到一种不错的从SQLServer转成Mysql数据库的方法(找到一款),希望有所帮助,仅作参考,欢迎阅读内容。

找到一种不错的从SQLServer转成Mysql数据库的方法(找到一款)

文章相关热门搜索词:找到一种好方法作文600字,找到一种不错的工作英语,找到一种方法英文翻译,找到一种方法英文翻译,找到一种不错的工作英语,找到一种不错的英文,找到一种不错的英文,找到一种不错的工作,内容如对您有帮助,希望把文章链接给更多的朋友!

MySQL UDF调试方式debugview的相关方法 MySQL的UDF实质就是一个不需要设置入口点的动态连接库(*Nix称之为共享库)。对于DLL的调试可谓个人有个法。现在我介绍一下一个非常简单的易用的调

使用dreamhost空间实现MYSQL数据库备份方法 如何利用SSH(Shell)来备份和恢复MySQL数据库的方法例如:数据库参数为::MySQL地址:mysql.dh.netMySQL名称:mysql_dbnameMySQL用户:mysql_dbuserMySQL密码:mysql_dbpass我要把数

MYSQL导入导出命令详解 /usr/local/mysql/bin/mysql-uroot-proottest-e"LOADDATAINFILE'/usr/1.txt'replaceINTOTABLEtestFIELDSTERMINATEDBY't'(name,address)"info:1.txtzhangsanwuhanlishiwuhan把1.txt文件插入到mysql数据库

标签: 找到一款

本文链接地址:https://www.jiuchutong.com/biancheng/319861.html 转载请保留说明!

上一篇:asp采用ODBC接口访问MySQL的方法(odbc api)

下一篇:MySQL UDF调试方式debugview的相关方法(mysql设置uuid)

  • 企业上缴税费总额怎么算
  • 房地产一般纳税人扣除土地价款
  • 如何在电子税务局开具全电发票
  • 银企对账如何操作
  • 固定资产改造超过原值多少需要转固
  • 小企业会计准则和企业会计准则的区别
  • 结转抵扣
  • 外聘人员劳务费入什么科目
  • 在建工程购入的空调怎样入账
  • 建筑业异地预缴税款怎么抵扣
  • 调价单生成什么科目
  • 水电费大于发票怎么处理?
  • 支付境外销售佣金怎么做
  • 12月份奖金怎么扣个税
  • 存货的损失计入什么科目
  • 保险公司赔偿计入营业外收入
  • 金税盘新领的发票怎么分发出去
  • 购入原材料没有发票只有入库单
  • 出口押汇和议付的区别
  • Windows11如何使用管理员账号登录
  • win10商店下载错误怎么回事
  • thinkphp5数据库操作
  • 其他应付款转营业外收入摘要
  • gym版本和render函数
  • sta翻译中文
  • 狗能看懂的电视
  • php字符串编码转换
  • 个人所得税申报流程图
  • 个体工商户税务登记需要哪些资料
  • 基本运算符号有乘方吗
  • 浏览器打开域名怎么设置
  • PostgreSQL安装、配置及简单使用方法
  • 汇款和转账有什么区别吗
  • 无偿划转股权涉税
  • 异地预缴附加税会计分录
  • 生产企业出口自产应税消费品实行什么方法
  • 计提坏账准备和确认坏账损失
  • 企业亏损所得税处理
  • 以前年度少记税怎么办
  • 外账会计的做账流程
  • 劳务报酬支出怎么算
  • 服务合同开什么发票
  • 公司注销后违法行为追究吗
  • 应交税金期末为负数
  • 去年亏损今年盈利同比怎么算
  • 为什么银行结息不加入账户
  • 一般情况下银行加权平均成本的变化主要取决于什么因素
  • 工程总包含设备工程吗
  • 项目所在地个税网上怎么报
  • 某劳务派遣公司与某传媒公司签订
  • 确定所开发票的项目的大类别?
  • 银行回单自助打印可以打多久的记录
  • 计提工会经费的工资总额包括五险一金吗
  • 费用报销银行转账用途怎么写
  • 企业租用个人房屋的财税处理
  • 设置包装盒
  • 怎样计算存款利息?
  • sql server m1
  • 安装完xp系统直接蓝屏怎么办
  • linux系统文件在哪个目录
  • ubuntu设置登录用户
  • windows屏蔽网络设置的方法不包括以下哪种
  • win7网络问题
  • win7系统电脑卡住了怎么办
  • Win10 64位系统下QQ语音和QQ视频音量很小的两种解决方法
  • win7电脑老是自动重启是什么原因
  • windows 8 key
  • window10光驱不能用了
  • nodejs入门教程
  • 关于shell的说法,不正确的是
  • perl ne
  • linux oracle数据库登录
  • unity shaderlab新手宝典
  • jQuery formValidator表单验证
  • jquery 表单
  • python 字典的字典
  • 自定义水印相机
  • 美容行业增值税率是多少
  • 济南槐荫税务局办税大厅电话
  • 一般纳税人办理退税流程及手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设