<font size=4 color=red>急,饭碗问题,请大虾出手,来发言的都有分!</font>(200分)

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间

吴剑明

Unregistered / Unconfirmed
GUEST, unregistred user!
目前到新公司工作,老板给第一个程序我做。是一个银行程序。
有25个营业点,各有一个数据库,现在要把它们集中到中心的一台
SQL SERVER数据库中去,每天都要做一次。倒入时,检查每笔数,已有的则更新,
没有则添加。
听起来好象不难是么? 现在的问题是:
由于有25个点,如果遍历每个营业点,一条一条的记录倒入,非常的慢。用DATASET
读一条,判断一下,再写。。。。。。效率不行啊。
记得以前有人用SELECT 。。。INTO 。。。来倒,但是我不会在不同的数据库之间
用SQL倒,源数据库是DBASE,在一台机上。目的库是SQL SERVER,在另一台机上。这个
跨机的SQL怎么写? 还要在UPDATE时,有则更新,无则添加? 或则哪个老大可以给出
更好的算法?
先谢谢各位了!
 
dbase 应是文件共享
如为提高速度,可以在客户端建立比较程序, 预处理后,有变化才发送更新
 
客户端先将DBase数据转换成SQL Server数据(下班前半小时做)
服务器端再用Select ... into
 
想快的话用Socket把各营业点的数据取过来——各营业点做Server端,中心作为Client
到各营业点去要数据,要来一条处理一条。用各表的ActiveBuffer作传递的数据结构
(当然要加一些控制信息),不用对各Field操作而是对行操作(因为你的DBase和SQL SERVER的表的结构是一样的)。

另外在SQL SERVER端做个触发器(for insert)也会好一些,可以把判断放在触发器里,
Socket程序只负责取数据并直接插入。
 
SQL SERVER的复制功能不是用来吃饭的
 
1。用SQL SERVER 的DTS功能
2。用SQL SERVER 的出版发行功能(我对此也不太了解)
 
1)先不比较,全部读到一个sql的临时表里。
2)用用存储过程做更新插入。insert into select from where exist ..
 
看一下BatchMove,把所有的dbase数据库先取到中心,用BatchMove往SQL里写(追加方式)
冲突数据可以丢掉!
 
我认为事情是这样的:
银行前后台之间的数据处理本质是“文本传递”。不外呼有上传、下传二种。
如25个前台上传数据叫后台处理,可把前台生成的SQL文本传过去,后台接到SQL文本
后,作本地化处理。我认为你这样做比较难,前台的线路通讯、前台的信息等等拥挤都是
个问题。前后台数据比较,可作为菜单操作必选项,当日日终轧帐的默任执行程序。
现在强调的是“大后台”政策,前台的所有设备不过是个大终端,充其量都是临时数据,
我想佛山商业银行的数据结构是有问题的。
银行员工常碰到的几个词汇:“上传成功,下传失败”“上传失败,下传成功”,
这就是传递文本的精神所在。


 
同意g622和Riantwin,我就是这样转数据的,
速度很快!
因为都在大型数据库里操作,所以,操作也很方便!
 
可用SQL SERVER的出版发行功能解决,可双向,也可单向,具体方法看看资料!
 
生成T-sql语句,直接执行。干净利落!
 
你的问题,SQL SERVER的工程师早都解决了!
用它的分布式数据库功能,
至少有三种办法:
1。文件型复制
2。E-MAIL代理复制
3。FTP代理复制
这些功能都在出版与发行里。
 
我认为有两种方法:
1、在delphi中使用BatchMove,建立临时表#biao,将所有的业务使用追加语句追加进入临时
表,再把临时表的数据追加进入你最终的业务表(效率较底)其他的什么DTS,效率更低;
2、你可以实验将所有的前端DBASE数据表链接进入一个ACCESS数据库,将SQL的数据库业务
表也链接进入此ACCESS数据库,对一个ACCESS数据库进行操作,非常的方便,以前我遇到
过象你这样的问题,采用了此种方法,非常高效(比SQL_Server都快)。而且ACCESS数据库
的insert into 语句本来就可以满足你的要求(相同的记录不动,没有的记录直接追加)
3、在使用ACCESS时,要注意安全性,ACCESS的安全性不高,容易破解。结合NT等授权,安
全性好很多。
 
现在的争论越来越有意思,也有道理。
如果前台不做成“大终端”进行文本传递,数据备份及数据的异地备份问题,怎么解决?
数据备份加一块硬盘,异地备份用软盘一张张的COPY?
商业银行是土八路。
 
》商业银行是土八路。
你骂人
 
张剑波:
老大怎么知道我是在给商行写程序的? :)
各位,不管商行如何,我现在只想面对问题,解决问题。各位说的都不错,可是忽略了
重要的一点:
其实直接倒数据还是挺快的,问题在于:倒入前要判断,有则更新,无则添加。
就是这里减慢了速度。目前他们那里的查数程序要运行1小时才能完毕。:)
太慢了。。。
 
你可以設定主鍵呀﹐然后你就直接往里面插入信息﹐若已存在就會返回錯誤信息﹐然后你
直接截取錯誤代碼﹐根據代碼判斷﹐若是重復﹐你就用修改﹐然后又接著插入信息﹐不知
這樣行不行。這樣﹐判斷工作就交給數據庫﹐而不用你的程序去做這件事了。
 
不好意思,不太了解具体情况,再说二句:
“倒入前要判断,有则更新,无则添加”
1。可加一字段(或标志位),判断是否需要更新。
2。新增记录随时更新。
 

Similar threads

S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部