请教大家一个数据库操作的问题!

vc555 2012-08-08 10:44:43
需求是这样的:
1.两个数据库,一个是access,另一个是oracle。
2.access里某个表数据会不断增加。
3.需要每隔5分钟,把access里的数据插入到oracle中。


我现在是建了两个事务,两个数据源。自己的想法是,直接写sql语句。

select * from t using access;

insert into t using oracle;

两个问题请教各位:
1.这种方式效率如何?
2.select * from t using access;这个会读出多条数据。这里要用游标。但是如何把这个游标里的查询结果集再insert into 到oracle中?
...全文
229 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyangziwo 2012-08-14
  • 打赏
  • 举报
回复
制作dw的时候,加上条件就行啦
vc555 2012-08-11
  • 打赏
  • 举报
回复
源库是access,假设加了标识列区分未传和已传数据,那传输时如何加条件让只是标识为未传的数据传输呢?
zhangyangziwo 2012-08-09
  • 打赏
  • 举报
回复
或者加一个标识列,传输过的一个值,未传输过的另外一个值,传输中的一个值。
zhangyangziwo 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
增加一个数据创建或修改的时间,然后根据时间导入到oracle中
[/Quote]
严重同意
WorldMobile 2012-08-09
  • 打赏
  • 举报
回复
建立数据管道时选择sqlserver,可以写条件

两个数据库不可以关联查询,如果都是oracle的话,可以用数据链路来实现

你需要逐个查找来实现,或者增加一个数据创建或修改的时间,然后根据时间导入到oracle中
vc555 2012-08-09
  • 打赏
  • 举报
回复
用数据管道做了。只是不知道数据管道如何加查询条件。

access的表有个id,如何只把oracle里没有对应id的数据同步过去呢?这涉及到两个数据库关联查询。
A啦Dbit 2012-08-08
  • 打赏
  • 举报
回复
建议了解一下数据管道
或用datastore批量传输
zhangyangziwo 2012-08-08
  • 打赏
  • 举报
回复
有游标肯定很慢,比如,弄两个dw,一个连的access,一个连的是oracle,两个dw间移动数据,然后,再提交dw2,这样就完成insert啦。
WorldMobile 2012-08-08
  • 打赏
  • 举报
回复
批量导入,可以用rowscopy
WorldMobile 2012-08-08
  • 打赏
  • 举报
回复
PB的数据窗口完全可以代替游标,尤其是数据量比较大的时候,不要用游标,对数据进行处理的话,效率比较差
WorldMobile 2012-08-08
  • 打赏
  • 举报
回复
1.这种方式效率如何?
答:效率比较差,建议有access数据库增加个字段,记录增加或修改的时间,然后根据这个时间去取上次导入之后的数据,然后再插到oracle数据库中,这样效率比较高,对数据库的压力比较小,如果你的t表数据比较少的话(1000行以下),你的方法也可行


2.select * from t using access;这个会读出多条数据。这里要用游标。但是如何把这个游标里的查询结果集再insert into 到oracle中?
答:建议不要用游标,效率比较差,建议用数据窗口来实现,效率比较高,建两个数据窗口,一个是基于access取数据用的,一个基于oracle保存数据用的,把数据从access数据窗口中插到oracle的数据窗口中,如果结构一致,可以考虑批量导入
  • 打赏
  • 举报
回复
建了两个事务,两个数据源
弄两个dw,一个连的access,一个连的是oracle
同一个w之间的不同dw可以用rowscopy或rowsmove进行批量导入
最后update你insert的表

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧