有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:
SELECT *
FROM msdb.dbo.MSdatatype_mappings
SELECT *
FROM msdb.dbo.sysdatatypemappings
来查看SQLServer和其他数据库系统的数据类型对应关系。第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
ORACLE bigint NUMBER 19 3 1
ORACLE binary BLOB NULL 0 1
ORACLE binary RAW -1 4 1
ORACLE bit NUMBER 1 3 1
ORACLE char CHAR -1 4 1
ORACLE char CLOB NULL 0 1
ORACLE char VARCHAR2 -1 4 1
ORACLE datetime DATE NULL 0 1
ORACLE decimal NUMBER -1 3 1
ORACLE double precision FLOAT NULL 0 1
ORACLE float FLOAT NULL 0 1
ORACLE image BLOB NULL 0 1
ORACLE int NUMBER 10 3 1
ORACLE money NUMBER 19 3 1
ORACLE nchar NCHAR -1 4 1
ORACLE nchar NCLOB NULL 0 1
ORACLE ntext NCLOB NULL 0 1
ORACLE numeric NUMBER -1 3 1
ORACLE nvarchar NCLOB NULL 0 1
ORACLE nvarchar NVARCHAR2 -1 4 1
ORACLE nvarchar(max) NCLOB NULL 0 1
ORACLE real REAL NULL 0 1
ORACLE smalldatetime DATE NULL 0 1
ORACLE smallint NUMBER 5 3 1
ORACLE smallmoney NUMBER 10 3 1
ORACLE sysname NVARCHAR2 128 4 1
ORACLE text CLOB NULL 0 1
ORACLE timestamp RAW 8 4 1
ORACLE tinyint NUMBER 3 3 1
ORACLE uniqueidentifier CHAR 38 4 1
ORACLE varbinary BLOB NULL 0 1
ORACLE varbinary RAW -1 4 1
ORACLE varbinary(max) BLOB NULL 0 1
ORACLE varchar CLOB NULL 0 1
ORACLE varchar VARCHAR2 -1 4 1
ORACLE varchar(max) CLOB NULL 0 1
ORACLE xml NCLOB NULL 0 1
ORACLE bigint NUMBER 19 3 1
ORACLE binary BLOB NULL 0 1
ORACLE binary RAW -1 4 1
ORACLE bit NUMBER 1 3 1
ORACLE char CHAR -1 4 1
ORACLE char CLOB NULL 0 1
ORACLE char VARCHAR2 -1 4 1
ORACLE datetime DATE NULL 0 1
ORACLE decimal NUMBER -1 3 1
ORACLE double precision FLOAT NULL 0 1
ORACLE float FLOAT NULL 0 1
ORACLE image BLOB NULL 0 1
ORACLE int NUMBER 10 3 1
ORACLE money NUMBER 19 3 1
ORACLE nchar CHAR -1 4 1
ORACLE nchar CLOB NULL 0 1
ORACLE ntext CLOB NULL 0 1
ORACLE numeric NUMBER -1 3 1
ORACLE nvarchar CLOB NULL 0 1
ORACLE nvarchar VARCHAR2 -1 4 1
ORACLE nvarchar(max) CLOB NULL 0 1
ORACLE real REAL NULL 0 1
ORACLE smalldatetime DATE NULL 0 1
ORACLE smallint NUMBER 5 3 1
ORACLE smallmoney NUMBER 10 3 1
ORACLE sysname VARCHAR2 128 4 1
ORACLE text CLOB NULL 0 1
ORACLE timestamp RAW 8 4 1
ORACLE tinyint NUMBER 3 3 1
ORACLE uniqueidentifier CHAR 38 4 1
ORACLE varbinary BLOB NULL 0 1
ORACLE varbinary RAW -1 4 1
ORACLE varbinary(max) BLOB NULL 0 1
ORACLE varchar CLOB NULL 0 1
ORACLE varchar VARCHAR2 -1 4 1
ORACLE varchar(max) CLOB NULL 0 1
ORACLE xml CLOB NULL 0 1
ORACLE bigint NUMBER 19 3 1
ORACLE binary BLOB NULL 0 1
ORACLE binary RAW -1 4 1
ORACLE bit NUMBER 1 3 1
ORACLE char CHAR -1 4 1
ORACLE char CLOB NULL 0 1
ORACLE char VARCHAR2 -1 4 1
ORACLE datetime DATE NULL 0 1
ORACLE decimal NUMBER -1 3 1
ORACLE double precision FLOAT NULL 0 1
ORACLE float FLOAT NULL 0 1
ORACLE image BLOB NULL 0 1
ORACLE int NUMBER 10 3 1
ORACLE money NUMBER 19 3 1
ORACLE nchar NCHAR -1 4 1
ORACLE nchar NCLOB NULL 0 1
ORACLE ntext NCLOB NULL 0 1
ORACLE numeric NUMBER -1 3 1
ORACLE nvarchar NCLOB NULL 0 1
ORACLE nvarchar NVARCHAR2 -1 4 1
ORACLE nvarchar(max) NCLOB NULL 0 1
ORACLE real REAL NULL 0 1
ORACLE smalldatetime DATE NULL 0 1
ORACLE smallint NUMBER 5 3 1
ORACLE smallmoney NUMBER 10 3 1
ORACLE sysname NVARCHAR2 128 4 1
ORACLE text CLOB NULL 0 1
ORACLE timestamp RAW 8 4 1
ORACLE tinyint NUMBER 3 3 1
ORACLE uniqueidentifier CHAR 38 4 1
ORACLE varbinary BLOB NULL 0 1
ORACLE varbinary RAW -1 4 1
ORACLE varbinary(max) BLOB NULL 0 1
ORACLE varchar CLOB NULL 0 1
ORACLE varchar VARCHAR2 -1 4 1
ORACLE varchar(max) CLOB NULL 0 1
ORACLE xml NCLOB NULL 0 1
2.建立链接服务器。我们将Oracle系统作为SQLServer的链接服务器加入到SQLServer中。
3.使用SQL语句通过链接服务器将SQLServer数据写入Oracle中。
比如我们建立了链接服务器MIS,而Oracle中在MIS用户下面建立了表contract_project,那么我们的SQL语句就是:
DELETE FROM MIS..MIS.CONTRACT_PROJECT
--清空Oracle表中的数据
INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中
SELECT contract_id,project_code,actual_money
FROM contract_project
如果报告成功,那么我们的数据就已经写入到Oracle中了。用
SELECT *
FROM MIS..MIS.CONTRACT_PROJECT
查看Oracle数据库中是否已经有数据了。
4.建立SQLAgent,将以上同步SQL语句作为执行语句,每天定时同步两次。
这样我们的同步就完成了。
这里需要注意的是MIS..MIS.CONTRACT_PROJECT 这里必须要大写,如果是小写的话会造成同步失败。
from:
http://www.zxbc.cn/html/20080524/50677_2.html
分享到:
相关推荐
在这个例子中,我们关注的是如何将SQL Server 2005中的数据同步到Oracle数据库中。这个过程通常涉及以下几个关键步骤: 1. **安装Oracle客户端**:在SQL Server 2005服务器上安装Oracle 9i客户端是首要任务,因为这...
例如,在某些情况下,可能需要将SQL Server 2005中的数据同步到Oracle数据库中,以便其他系统能够访问这些数据。这种跨数据库平台的数据迁移或同步操作可以通过多种方式实现,本文将详细介绍其中一种方法:使用链接...
Oracle同步数据到Sql Server,只是初始加载过程,由于本人也是在学习阶段,本资料主要是用于备份,慎入!
SQL Server 中 Image 类型数据导出到 Oracle 的 CLOB 字段中 在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 ...
1. **数据模型捕获**:在SQL Server 2005中使用工具捕获数据模型。 2. **转换为Oracle模型**:将捕获的SQL Server模型转换为适用于Oracle的数据模型。 3. **生成Oracle脚本**:根据转换后的模型生成相应的Oracle PL/...
总体思路是:先将Oracle数据库类型转换为SQL Server模式,接着同步Oracle数据到SQL Server数据库,最后迁移Oracle数据到SQL Server数据库。 本文详细讲解了如何使用Microsoft SQL Server Migration Assistant for ...
3. **数据库链接服务器**:SQL Server支持创建到其他数据库(包括Oracle)的链接服务器,可以直接在SQL Server中编写跨服务器查询,实现数据同步。同样,Oracle也有相应的DB Link功能,可以实现反向同步。 4. **第...
### 如何在两个SQLSERVER之间实现数据同步 在IT领域,特别是对于企业级应用而言,数据同步是一项重要的技术,能够确保不同地理位置的数据中心之间数据的一致性和可用性。本文将详细介绍如何通过SQL Server的复制...
本实验旨在实现从 SQL Server 2012 到 Oracle 数据库的数据同步复制功能,采用 Oracle GoldenGate (OGG) 工具进行搭建与配置。主要目标是测试表数据的 DML (数据操作语言) 同步能力。 #### 实验环境 - **源端(SQL ...
在本配置参考中,我们将探讨如何使用Oracle GoldenGate(简称OGG)来实现SQL Server到Oracle,MySQL到Oracle以及MySQL到MySQL的同步配置。 1. SQL Server到Oracle的同步配置: - 首先,你需要在SQL Server上安装并...
标题“sqlserver转oracle”指的是将SQL Server数据库中的数据迁移或同步到Oracle数据库的过程。这个过程通常发生在组织更换数据库系统,或者需要在不同数据库平台之间共享数据时。下面将详细介绍这个过程中涉及的...
本文将详细阐述如何在SQL Server 2000中建立到Oracle数据库的连接,以便从SQL Server中读取Oracle中的数据。 首先,我们需要了解SQL Server 2000的数据链接服务器功能,这是实现跨数据库连接的关键。数据链接服务器...
接着,将OGG for Sqlserver的软件包解压缩到指定目录,比如"ogg",然后通过`install addservice`命令在CMD中注册Windows服务,包括源端和目标端的Manager进程。 创建ODBC数据源命名(DSN)是连接SQL Server的关键...
sql server2008 cdc 数据实时同步到kafka,Debezium是捕获数据实时动态变化的开源的分布式同步平台。能实时捕获到数据源(Mysql、Mongo、PostgreSql)的:新增(inserts)、更新(updates)、删除(deletes)操作,实时...
通过以上知识点,我们可以了解到这个项目是一个实用的数据同步工具,对于需要在SQL Server和Oracle之间定期交换数据的环境非常有用。对于初学者来说,这是一个很好的学习C#、数据库操作以及定时任务实现的实例。
6. **性能优化**:由于跨数据库查询可能会导致性能问题,因此在实际使用中,考虑使用存储过程、视图或者定期的数据同步来提高效率。 通过以上步骤,你就可以在SQL Server中顺利地访问和操作Oracle数据库了。但请...
连接sqlserver数据库后选择相应的数据库-数据表以及目标数据库(目前只有oracle),可以将sqlserver转换成oracle数据,有两种方式,点击转换sql按钮,可以生成sql语句,复制语句到oracle里执行。第二种是连接oracle...
标题中提到的是“SQL Server 2005与Oracle之间数据复制技术的研究”,这涉及到两个非常重要的关系数据库管理系统(RDBMS)之间的数据同步技术。微软的SQL Server 2005是一个为商业应用提供数据管理和分析解决方案的...
DBSyncer(简称dbs)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、...