MS-Sqlserver访问MySql总结
公司要做一个数据统计系统,网站用的是MySql数据库,而系统用的是SqlServer数据库,为不影MySql数据库的使用,数据需定时同步到SqlServer数据库中。小弟的解决方法如下,大家共同交流。 1:Windows服务器上安装SqlServer2000或2005,并安装MySql-ODBC驱动 (mysql-connector-odbc-5.1.8-win32.msi? 2.5MB) 2:配置Windows ODBC数据源 控制面板—>管理工具-->数据源 (ODBC)-->选择系统DSN选项卡 点击添加按钮—>选择MySql ODBC 5.1 Driver 点击完成按钮弹出MySql Connector/ODBC配置对话框 (填写此ODBC的数据源名,MySql的服务器地址,端口,用户名,密码,对应数据库) 点击Details下面的Character Set选择UTF8,(SqlServer和MySql编码方式默认不一样,中文会出现乱码) 至此ODBC数据源配置完毕。 3:配置SqlServer(这里用2000)数据库 打开企业管理器--->安全性--->鼠标右击链接服务器--->新建链接服务器弹出配置框 链接服务器:请输入有意义的名称 其他数据源:Microsoft OLE DB Provider for ODBC Driver 链接服务器:请输入有意义的名称 数据源:刚才配置的ODBC数据源 4:写存储过程提取数据 SqlServer访问MySql的语句如下: SELECT * FROM OPENQUERY(MYSQL_UCENTER,'SELECT uid,RTRIM(username) as username,FROM_UNIXTIME(regdate) AS dateregdate 问题点: (1)由于MySql里有些字段用char类型,所以数据后面会有空格用RTRIM()将空格去掉,否则会报错。 (2)Mysql很多时候日期用的是整数,整数确实比日期格式检索速度快不少。本人对MySql数据库了解不是很深。所以还是把整数时间专为标准日期格式 FROM_UNIXTIME(regdate) (3)设置MySql里的查询编码方式 set names gb2312 (4)SqlServer里的OPENQUERY()函数使用,函数内不能传入参数,所以将参数放在函数外面。有关此函数的使用大家可以在网上查一查 (5)大家在SqlServer里自定义一些函数,用于日期格式和整形时间转换 select (datediff(ss,'1970-01-01 08:00:00','2011-07-10'))-----将时间转换为秒 CREATE FUNCTION [dbo].ToDateTime(@sec int) 要怎么样取数据大家可以多试试。 运行此查询将数据从MySql里取出来 5:将取出的数据写入SqlServer数据库中,这里就不介绍了。 6:SqlServer上的存储过程封装,日志记录等,要完成什么样的记录,以及下次通过什么记录点(一般都是一个时间戳)再次提取,根据不同的业务作出不同的方案,要有一定的T-SQL功底哦 呵呵,小弟头一次发博文,还望各位多多指教。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |