不同类型的数据库同步数据

不同类型的数据库同步数据

项目中遇到某些数据,这些数据已经在其他项目中体现,直接把他们的表及表数据复制下来就好,但是在复制时发现,我用的是sql 2008,他们用的mysql,两个不同的数据库,生成的语句略有差别,由于比较懒,想用最省事的方式来同步数据,就在网上搜到了解决方案,参考实现,虽然网上类似的较多,但是毕竟是自己亲自体验过的,记录下来。

  1. 首先打开mysql操作界面(这省略了安装配置等步骤),输入想要连的数据库,进行验证链接的正确性。

 

 

2 确认mysql的驱动是否存在,若存在则选择,打开控制面板—》管理工具—》数据源(ODBC)

 

3 点击添加按钮

 

4  若有有下图所示类似的mysql驱动,则进行选择,若没有驱动这时就需要自己在官网上下载一个(https://dev.mysql.com/downloads/connector/odbc/),进行安装(步骤省略,下一步就行),安装完毕后重复以上操作,进入下如下图界面,进行选择—》点击完成

 

5 完成后会弹出该界面,按需填写信息—》Test 测试一下,若成功会有提示。

 

6 以上就是mysql驱动及连接的设置测试,以下是如何进行在数据库中操作

7 打开sql 2008 新建查询窗口如下图

 

8 把下面的代码拷贝到查询框中,点击执行(注意:@provstr这个属性中驱动一定要和刚才配置的保存一致【N'DRIVER={MySQL ODBC 5.3 ANSI Driver}】),然后就是链接地址

EXEC master.dbo.sp_addlinkedserver

@server = N'MYSQL', 

@srvproduct=N'MySQL',

@provider=N'MSDASQL',

@provstr=N'DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=192.16.10.101; _

 DATABASE=lcj; USER=root; PASSWORD=111111; OPTION=3'

9 执行成功,在SQL 2008 最外层服务器对象下中会出现如下图所示:

 

10 你可以在SQL 2008中新建一个库(dataabase),表可以不用创建,执行如下SQL语句把MySQL数据库lcj中的表stationd复制到新建库下

    SELECT * INTO [dataabase].dbo.stationd 

    FROM openquery(MYSQL, 'SELECT * FROM lcj.stationd') 

11  这是在同一SQL server下不同库【DHQXZB,dataabase】之间复制表的语句,顺便写上

SELECT * into DHQXZB.dbo.stationd from dataabase.dbo.stationd

---------------------------分割线----------------------------------

名词解释

 ODBC:开放数据库连接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的,现已成为WOSA(The Windows Open System Arhitecture,Windows 开放系统体系结构)的主要部分和基于Windows环境的一种数据库访问接口标准ODBC 为异构数报库访问提供统一接口,允许应用程序以SQL 为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据,免除随DB的改变而改变。用ODBC 可以访问各类计算机上的DB文件,甚至访问如Excel 表和ASCI I数据文件这类非数据库对象

原文地址:https://www.cnblogs.com/tianyiwuying/p/8269964.html