• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

数据迁移问题

bj_leo_2000 2008-03-12 04:22:54
如何定时将一台机器上sql server数据库中的数据抽取出来,插入到另一个台远程机器上的oracle数据库的一个不同的表中!
...全文
76 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
star1083 2008-03-15
DTS可以解决这个问题的。
楼主可以在 SQLserver 或 在oracle 上建立一个中间库。。
通过DTS包定时完成。。。可以的。
我做的是从oracle 导入 SQLserver 现在一直是这样使用的。
回复
bj_leo_2000 2008-03-13
DTS中如何把从源数据中的字段导入到目的表中对应的字段?
回复
shirley_yue 2008-03-13
学习了
回复
bj_leo_2000 2008-03-13
请问dts包能够导出为文件在另一个机器上导入使用吗?
回复
bj_leo_2000 2008-03-12
如何在sql server中建立对oracle的连接?如何实现定时执行?
回复
dawugui 2008-03-12
如何定时将一台机器上sql server数据库中的数据抽取出来,插入到另一个台远程机器上的oracle数据库的一个不同的表中!
--

虽然我上面说的这些理论都可行,
但是实践中,效果都不好,建议不要这么搞.

自己用某种开发语写个程序,定时把数据从sql server导入oracle.这样比较好.
回复
dawugui 2008-03-12
然后建立sql 和 oracle之间的通信

配置透明网关的步骤


前一段花了些时间配置 TRANSPARENT GATEWAY
现在把心得贴出来与大家共享

我的OS是WIN2000
ORACLE 9.0
SQLSERVER2000
HOSTNAME : SVR1
都使用 tcp/ip 默认端口


1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql

2: 配置 LISTENER.ORA
(SID_DESC =
(GLOBAL_DBNAME = tg4sql) # 可自己命名
(PROGRAM = tg4msql)
(SID_NAME = sql2000) # SID 自己命名
(ORACLE_HOME = D:\oracle\ora90)
)

3: 在 oracle_home\ora90\tg4msql\admin
建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000
因此文件名为:initsql2000.ora
其中内容为:
HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

4: 重启 DATABASE AND LISTENER

5: 配置 tnsnames.ora
tg_sql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = sql2000)
)
(HS=OK)
)

6: 建立 DATABASE LINK
CREATE PUBLIC DATABASE LINK DB_SQL
CONNECT TO SA IDENTIFIED BY PASSWORD
USING 'tg_sql'

7: 完成,测试
select * from t_test@db_sql

8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
如果为 FALSE, 不必使用全称,当出现
“ORA-02019:为找到远程数据库的连接说明”
时,请使用全称,如:
select * from t_test@db_sql.US.ORACLE.COM
回复
dawugui 2008-03-12
定时作业的制定

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
EXEC 存储过程名 ... --该存储过程用于创建表

--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
回复
dawugui 2008-03-12
先要建立个作业.
回复
OracleRoob 2008-03-12

1、在SQL Server机器上安装Oracle对应版本的客户端驱动。

2、配置监听程序。

3、配置服务名。

4、在SQL Server重创建链接服务器后,使用OpenQuery()函数访问Oracle中的表。

select * from OpenQuery( '链接服务器ming ', 'select 字段列表 from Oracle的用户.Oracle中的表名 ')
where ...

insert into OpenQuery(链接服务器名, 'select 字段列表 from Oracle的用户.Oracle中的表名 ') (字段列表)
select 字段列表
from SQLServer中的表名

delete OpenQuery( '链接服务器ming ', 'select 字段列表 from Oracle的用户.Oracle中的表名 ')
where ...

update OpenQuery( '链接服务器ming ', 'select 字段列表 from Oracle的用户.Oracle中的表名 ')
where ...
回复
青锋-SS 2008-03-12
没玩过oracle
回复
-狙击手- 2008-03-12
EXEC sp_addlinkedserver
@server = 'LONDON Mktg',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'MyServer'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'LONDON Mktg',
'Oracle',
'MSDAORA',
'MyServer'
GO
或是用链接服务器,自己导入
回复
OracleRoob 2008-03-12
SQL 2000 : DTS
SQL 2005 : SSIS

也可以自己写代码处理,用链接服务器、OpenRowSet、OpenDataSource等
回复
-狙击手- 2008-03-12
DTS
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-12 04:22
社区公告
暂无公告