愿倾囊相赠700分!!求解sql server 表到oracle表导入导出数据的问题(注:表结构不同,字段名称等有可能不同)(200分)

  • 主题发起人 xiaoxian
  • 开始时间
我也許明白你的需求,提一下我的想法吧:
如果總部有靜態IP則應在總部服務器及分部服務器中間件中加上通訊模塊(用Socket TCP/IP較快,
UDP不可,因不可靠),由於Table是固定的,所以可以每一個Table數據之偉輸用一個port,每個
Table數據之處理分兩部分(translation和Processing,要做好同步),通訊模塊要是Mutithread
通訊時應有2*port+1個thread,加上我第一次所講,也許可以得到較好的性能。
另,有靜態ip的server應可以用客戶端Component(自己去找) download 其數據,通訊功能留給database server
和component,工作可簡化,你自已評估一下吧!
沒有靜態ip須動太確定,自已須寫好這一部分,另就第三方server或email了




 
to wudoo:
哎呀,不好意思,我又让您误解我的意思了。简单的说,我就是从分部sql server 中导出数据
到本地中间文件中(xml文件),再把xml文件上传到总部并导入到oracle数据库中。由于sql
server 和oracle对应表的表结构不同(比如字段名不同,字段长度不同等等。但存储的信息是一样的,比如员工信息表),
数据的导入导出比较麻烦,您能否给我提供一个好的方案实现之?
 
to wudoo:怎样通讯我实现了,可不予考虑
 
考慮一下把xml文件中的內容放到RichEdit1元件中,把相關字段映射為總部字段再上偉吧!
 
剛才誤會了
 
sql server 2000中有可直接產生xml的sql語句速度很快速!
 
to wudoo:
怎样映射阿,请赐教!!
 
to wudoo:
TADOQUery有个方法就是savetofile,可以保存成xml文件,所以导出数据是很方便的,
但是导入就很麻烦了,TAdoQuery 可以loadfromfile,但是是load到内存中,我还要按对应字段
insert到oracle数据库表中呢,所以比较慢。
如果我们的系统不是用ADO连接数据库而是用bde,还有个TBATCHMOVE控件可以直接把中间文件
是paradox表导入到数据库中,但是用ADO的控件就不行了,所以我用‘xml’格式的中间文件
 
用RichEdit1的查找和替換,create a table(tbname,brfield,brlength,hdfield,hdlength)
填寫替換的內容!
 
想法比較正確,但insert過程確是太慢,TAdoQuery loadfromfile后用儲存過程速度應是
可接受的(只有更改過和新建之數據需要update至總部).
 
如果要编程解决,建议,先一次性倒入到临时表里,在执行比较的Sql语句,去除重复数据,再一次性倒入,快很多
 
to yunye:怎样一次性导入呢???
 
to wudoo:
我现在是这样导入的:
先用TADOQUERY把分部xml文件load到内存,再逐条insert到一个临时表(因为总部字段有可能是由分部字段计算得到,所以无法直接insert到正式表中;)
然后再判断重复,按对应字段insert到正式表中,所以确实很慢,可是又没有好办法
 
to wudoo:
现在速度慢的地方就是从xml文件把数据insert到临时表中,这一步挺慢的,如果TADOQUERY
能直接load到数据库中而不是内存中就好了,呵呵
 
to xiaoxian,
現所有的database server都應支持xml數據直接import 至數據庫的編程SQL語句,你去查一
下ORACLE資料定有收獲,就可實現一次性導入了.
 
多人接受答案了。
 
顶部