`
cswcfs
  • 浏览: 11375 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

将SQL Server 2005中的数据同步到Oracle中

阅读更多
  有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。
  有时由于项目开发的需要,必须将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中。

  具体做法参见我以前的文章http://www.cnblogs.com/studyzy/archive/2006/12/08/690307.html

  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 这里必须要大写,如果是小写的话会造成同步失败。

此文转载自http://database.ctocio.com.cn/tips/3/7708503.shtml
分享到:
评论

相关推荐

    将SQL Server 2005中数据同步到Oracle中

    在这个例子中,我们关注的是如何将SQL Server 2005中的数据同步到Oracle数据库中。这个过程通常涉及以下几个关键步骤: 1. **安装Oracle客户端**:在SQL Server 2005服务器上安装Oracle 9i客户端是首要任务,因为这...

    将SQLSERVER中的数据同步到ORACLE中

    例如,在某些情况下,可能需要将SQL Server 2005中的数据同步到Oracle数据库中,以便其他系统能够访问这些数据。这种跨数据库平台的数据迁移或同步操作可以通过多种方式实现,本文将详细介绍其中一种方法:使用链接...

    Oracle同步数据到Sql Server

    Oracle同步数据到Sql Server,只是初始加载过程,由于本人也是在学习阶段,本资料主要是用于备份,慎入!

    sql server中的image类型的数据导出到oracle的clob字段中

    在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 在 SQL Server 中,Image 类型用于存储二进制大对象(BLOB),如图像、音频、视频...

    sql server 2005到oracle10g数据库的移植视频教程

    1. **数据模型捕获**:在SQL Server 2005中使用工具捕获数据模型。 2. **转换为Oracle模型**:将捕获的SQL Server模型转换为适用于Oracle的数据模型。 3. **生成Oracle脚本**:根据转换后的模型生成相应的Oracle PL/...

    oracle数据库导入到SQL server.docx

    总体思路是:先将Oracle数据库类型转换为SQL Server模式,接着同步Oracle数据到SQL Server数据库,最后迁移Oracle数据到SQL Server数据库。 本文详细讲解了如何使用Microsoft SQL Server Migration Assistant for ...

    sql数据同步到oracle

    2. **数据库触发器**:在SQL Server中创建触发器,当数据发生变化时,触发器自动执行将更改同步到Oracle的脚本。这种方法适用于实时性要求高的场景,但可能会增加数据库的负担。 3. **数据库链接服务器**:SQL ...

    SqlServer2005通过复制同步Oracle10G

    SqlServer2005通过复制同步Oracle10G,通过SQLServer Agent新建Oracle发布新建订阅实现数据库同步

    如何在两个SQLSERVER之间数据同步

    ### 如何在两个SQLSERVER之间实现数据同步 在IT领域,特别是对于企业级应用而言,数据同步是一项重要的技术,能够确保不同地理位置的数据中心之间数据的一致性和可用性。本文将详细介绍如何通过SQL Server的复制...

    1.配置sqlserver2012到oracle的ogg同步复制报告.pdf

    本实验旨在实现从 SQL Server 2012 到 Oracle 数据库的数据同步复制功能,采用 Oracle GoldenGate (OGG) 工具进行搭建与配置。主要目标是测试表数据的 DML (数据操作语言) 同步能力。 #### 实验环境 - **源端(SQL ...

    ogg sqlserver-oracle mysql-oracle mysql-mysql的同步配置参考

    在本配置参考中,我们将探讨如何使用Oracle GoldenGate(简称OGG)来实现SQL Server到Oracle,MySQL到Oracle以及MySQL到MySQL的同步配置。 1. SQL Server到Oracle的同步配置: - 首先,你需要在SQL Server上安装并...

    sqlserver转oracle

    标题“sqlserver转oracle”指的是将SQL Server数据库中的数据迁移或同步到Oracle数据库的过程。这个过程通常发生在组织更换数据库系统,或者需要在不同数据库平台之间共享数据时。下面将详细介绍这个过程中涉及的...

    SqlServer数据库OGG安装部署及数据初始化.docx

    在这个场景中,我们关注的是如何在SQL Server数据库环境下安装配置Oracle GoldenGate(OGG),并将数据从SQL Server实时同步到Oracle数据库。以下是对整个过程的详细说明: 首先,确保你的SQL Server是企业版,并且...

    SQLSERVER2000连接到ORACLE

    本文将详细阐述如何在SQL Server 2000中建立到Oracle数据库的连接,以便从SQL Server中读取Oracle中的数据。 首先,我们需要了解SQL Server 2000的数据链接服务器功能,这是实现跨数据库连接的关键。数据链接服务器...

    从SqlServer导数据到Oracle数据库的winform程序(定时器).zip

    在本项目中,开发者创建了一个基于Winform的C#应用程序,该程序实现了从SQL Server数据库向Oracle数据库的数据迁移功能,并且这个迁移过程是通过一个定时器来触发的,确保了数据的实时同步。以下是关于这个项目的...

    confluent实时同步sqlserver数据debezium-connector-sqlserver.zip

    sql server2008 cdc 数据实时同步到kafka,Debezium是捕获数据实时动态变化的开源的分布式同步平台。能实时捕获到数据源(Mysql、Mongo、PostgreSql)的:新增(inserts)、更新(updates)、删除(deletes)操作,实时...

    Sqlserver转Oracle工具

    连接sqlserver数据库后选择相应的数据库-数据表以及目标数据库(目前只有oracle),可以将sqlserver转换成oracle数据,有两种方式,点击转换sql按钮,可以生成sql语句,复制语句到oracle里执行。第二种是连接oracle...

    SQL Server 如何通过链接服务器访问 Oracle

    本篇文章将详细介绍如何在SQL Server中通过链接服务器技术来访问Oracle数据库,以实现数据的整合和交互。 首先,我们要理解SQL Server中的“链接服务器”概念。链接服务器是SQL Server提供的一种机制,它允许用户在...

    一款开源的数据同步中间件提供MySQL、Oracle、SqlServer、Postgre,File,kafka,SQL等同步场景

    DBSyncer(简称dbs)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、...

Global site tag (gtag.js) - Google Analytics