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