如何将SQLServer2005中的数据同步到Oracle中

2016-02-19 18:17 16 1 收藏

今天图老师小编要跟大家分享如何将SQLServer2005中的数据同步到Oracle中,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - 编程语言 】

  有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。

  1.在Oracle中建立对应的contract和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。

  这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:

  SELECT*
  FROMmsdb.dbo.MSdatatype_mappings
  
  SELECT*
  FROMmsdb.dbo.sysdatatypemappings

  来查看SQLServer和其他数据库系统的数据类型对应关系。第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好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  doubleprecision  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  doubleprecision  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  doubleprecision  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中。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  比如我们建立了链接服务器MIS,而Oracle中在MIS用户下面建立了表contract_project,那么我们的SQL语句就是:

  DELETEFROMMIS..MIS.CONTRACT_PROJECT
  --清空Oracle表中的数据
  INSERTintoMIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中
  SELECTcontract_id,project_code,actual_money
  FROMcontract_project

  如果报告成功,那么我们的数据就已经写入到Oracle中了。用

  SELECT*
  FROMMIS..MIS.CONTRACT_PROJECT

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  查看Oracle数据库中是否已经有数据了。

  4.建立SQLAgent,将以上同步SQL语句作为执行语句,每天定时同步两次。

  这样我们的同步就完成了。

  这里需要注意的是MIS..MIS.CONTRACT_PROJECT 这里必须要大写,如果是小写的话会造成同步失败。

来源:http://www.tulaoshi.com/n/20160219/1617175.html

延伸阅读
标签: SQLServer
装完sql server 2005后却没有找到ms的示例数据库northwind   后来查看安装光盘发现sql server 2005种只有adventurework与adventureworkDW这两个sample database   到ms官方站找了好久  才找到sql server 2000的sample database   下载链接如下 http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A...
标签: excel
如何将网页数据放入Excel中   如何将网页数据放入Excel中,并实时更新?数据自网站输入网址导出属性根据需求调整设置,完成! 如何在Excel里给汉字标注拼音?   如何在Excel里给汉字标注拼音?你只需要通过拼音指南按钮,三个小小的步骤就能给完成~先点击拼音设置决定拼音的排列格式和字体,然后点击编辑拼音输入该字的拼音...
标签: SQLServer
  如果你用的是sql server数据库!你不想用后台操作你可以看看这个 下面是对text的操作你可以看看 1. 写操作(WRITETEXT) 这里一般要用到的函数有TextPtr获得文本字段的指针,和TextVaild检验指针的有效性,@@RowCount判断返回记录的条数。 其基本方法是:用Textptr函数得到指针,判断其有效性,用Writetext写数据 函数说明:Textptr(...
标签: 服务器
在VMWare中配置SQLServer2005集群 Step by Step(五) SQLServer集群安装   安装 SQLServer2005 集群 1. 安装MSDTC ,打开控制面板,添加删除程序,添加删除 windows 组件,选择应用服务器,选择启用网络DTC 访问 2. 安装完成后,在集群 管理 器中添加资源MSDTC 3. 选择所有的节点即可 4. 选择MSDTC 依...
标签: SQLServer
场景如下: 安装sqlserver2005中文版,然后升级vs2005以支持WebApplicationProject项目模版(就是从微软的网站上下载的那两个安装包,以支持使用vs2005开发WebApplicationProject)。问题就出来了:打开vs2005,发现大部分菜单都已经自动变成中文的,这个还好,当你准备新建一个project时,发现除了刚安装的WebApplicationProject项目模版之外...

经验教程

770

收藏

89
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部