说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

实现不同数据库系统之间的数据转移-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
实现不同数据库系统之间的数据转移-Delphi资料

在 计 算 机 应 用 系 统 的 软 件 升 级 改 造 过 程 中, 我 们 经 常 遇 到 这 样 一 个 问 题: 老 系 统 的 数 据 库 平 台 与 新 系 统 不 同。 例 如, 老 系 统 的 数 据 库 平 台 是Foxpro, 而 新 系 统 的 平 台 是SQL Server。 而 且, 我 们 需 要 把 旧 的 数 据 库 应 用 系 统 中 的 一 些 数 据 转 移 到 新 系 统 来。 但 是 因 为 新 老 系 统 在 定 义 数 据 类 型、 数 据 格 式 等 方 面 的 差 异, 就 很 难 用 人 工 录 入 的 方 法 来 实 现。 因 此, 需 要 有 一 个 能 实 现 这 种 功 能 的 程 序。

本 文 利 用Borland Delphi 实 现 了 这 个 转 移 过 程。

基 本 思 想 是: 在 一 个Form 中, 分 别 用 两 个TDatabase 控 件 连 接 新 老 数 据 库。 并 采 用 TTable、TDbGrid 作 为 数 据 转 移 的 中 心, 根 据DbGrid 中 的 数 据 生 成 标 准 的SQL 插 入 语 句。 这 样, 就 实 现 了 从 一 个 数 据 库 系 统 到 另 一 个 数 据 库 系 统 的 数 据 转 移。 在 这 里, 采 用TTable、TDbGrid 作 为 数 据 转 移 的 中 心 是 一 个 技 巧, 因 为:TTable 的Fields 属 性 能 指 示 出 某 字 段 的 字 段 名 称、 数 据 类 型 等, 这 为 数 据 转 移 过 程 中 的Insert 语 句 的 生 成 及 数 据 类 型 转 换 提 供 了 依 据。

下 面 的 例 子 展 示 了 从Foxpro 到SQL Server 的 数 据 转 移 方 法。 至 于 其 他 系 统 间 的 数 据 转 移, 只 要 根 据 目 标 系 统 的 数 据 定 义 要 求, 修 改 相 应 的Insert 语 句。

程 序 代 码 如 下:

unit ConvertDBF;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

StdCtrls

DBTables

Db

Grids

DBGrids;

type

TfrmConvertDB = class(TForm)

btnOK: TButton;

Label1: TLabel;

db1: TDatabase; {用于连接老数据库系统}

db2: TDatabase; {用于连接新数据库系统}

dbg: TDBGrid;

tblSource: TTable; {dbg的Datasource}

qryInsert: TQuery;

{用于存放生成的SQL Insert语句}

srcSource: TDataSource;

tblDest: TTable; {DBGrid1的Datasource}

DBGrid1: TDBGrid;

srcDest: TDataSource;

edFromtbl: TEdit;

Label2: TLabel;

Label3: TLabel;

edToTbl: TEdit;

procedure btnOKClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmConvertDB: TfrmConvertDB;

implementation

{$R *.DFM}

procedure TfrmConvertDB.btnOKClick

(Sender: TObject);

var iField :integer;

begin

if ((edTotbl.text<>'') and

(edFromtbl.text<>''))then begin

tblSource.TableName:=edFromtbl.text;

{指定TableName}

tblDest.TableName:=edTotbl.text;

with tblSource do begin

Open; {打开老系统的表}

while EOF=FALSE do begin

{逐条记录处理}

qryInsert.SQL.Clear;

qryInsert.sql.Add

('Insert into '+edTotbl.text + '(');

for iField:=0 to dbg.FieldCount-1 do begin

qryInsert.sql.add

(dbg.Fields[iField].DisplayLabel);

if iField<>dbg.FieldCount-1 then

qryInsert.sql.add('

');

end;

qryInsert.sql.add(') values(');

for iField:=0 to dbg.FieldCount-1 do begin

{进行数据类型转换}

if dbg.fields[iField].DataType=ftInteger then

qryInsert.sql.add(inttostr

(dbg.fields[iField].asInteger));

if dbg.fields[iField].DataType=ftFloat then

qryInsert.sql.add(floattostr

(dbg.fields[iField].asFloat));

if dbg.fields[iField].DataType=ftDate then

qryInsert.sql.add(''''+datetostr

(dbg.fields[iField].asDateTime)+'''');

if dbg.fields[iField].DataType=ftString then begin

if dbg.fields[iField].asString<>'' then

qryInsert.sql.add(''''+dbg.fields

[iField].asString+'''')

else

qryInsert.sql.add('NULL');

end;

if iField<>dbg.FieldCount-1

then qryInsert.sql.add('

');

end;

qryInsert.sql.add(')');

qryInsert.ExecSQL;

{把数据插入到新系统的表中}

next;

end;

end;

tblDest.Close;

tblDest.Open;;

ShowMessage(' 转换完毕! ');

end

else

ShowMessage

('请输入要插入数据的表的名称 ');

end;

end.

Cocos2d-x,老牌引擎的新进化 Kingdom Rush创始人专访:游戏与电影元素混搭 超实用的JavaScript技巧及最佳实践(下) 盖茨和鲍尔默或成挑选微软新CEO的最大阻碍 移动开发进阶:触发式邮件深入分析 King.com传奇再续!Farm Heroes Saga强势登陆iOS、Android 2013综述稿:Clojure这一年及大事件 亚马逊AWS vs.谷歌GCE,彪的是价格? 2014,混合云被广泛采用的一年 传微软拉拢厂商推双启动系统手机 用户可选Windows Phone或Android 为什么游戏领域总是“抄抄抄”! 物竞天择、百家争鸣——评OpenStack生态圈 CES 2014:Intel针对可穿戴技术发布多款产品 直击CES:Pebble推金属版智能手表Pebble Steel 为4K智能电视而生:高通推出骁龙802处理器 英特尔首席执行官阐述可穿戴设备新技术及Edison计算平台 设计师如何写出更棒的项目建议 微软以1亿美元收购Parature“知识库” 登陆CES:三星发布智能家庭平台Smart Home CES 2014:GPS供应商Garmin推健康腕带Vivofit 《近匠》第05期:移动开发工具访谈,个推——有节操的push 【Hadoop技术博客推荐】Hive的那些事 Twitter联合创始人推社交搜索应用Jelly 马云“食言”进军手游分成比例8:2,开发者可拿7成 CodeCombat游戏全面开源:玩游戏也能学编程 Netflix首席云架构师Adrian Cockcroft加盟Battery Ventures Android 4.3附体:RIBX发布FB/Ti 互联网手表 IE11界面布局的秘密武器:Quero Toolbar 【开源专访】Node-Webkit作者王文睿:桌面应用的全新开发方式 CentOS归属红帽:企业级Linux领域社区与商业的融合 印度初创公司Little Eye Labs证实已被Facebook收购 刚收到111222的信~~~难过~~~我会想念他的~~~你们是不是也会~~~ 我的硬盘为何这样!help!! 考水平考试的朋友过来看看 我要毕业啊 ===============想知道111222去向的朋友,看这(独家披漏)===================== 以下SQL语言如何写? 111222走了~~送分~~~心里不好受~~~ 111222真的走了~~~~~~~~~~~ JBuilder中用MYSQL数据库,用中文进行条件查询时,查不出任和数据? ASM 菜鸟问题,请大家帮忙!谢谢 解释一下好了吗? ============答对我的问题者,将可获得111222的签名照片!!!!!!!!=========== 关于图片的上传 ======== 绝对好消息,activereport2.0已经release 了,cracker们出动啊~~~~~加油 ============= 关于什么才是真正的系统分析和系统分析员的讨论!——欢迎大家参加,进行善意地讨论!^&^ 今晚的球赛什么时候开始啊? 哪里有关于水平考试(高程)的模拟题的啊??? 为什麽还是不能显示中文呢? 怎样获取WIN2000的密码 在父窗体怎样画jpg格式的背景图? 如何注册MSComm控件????????? 如何解决这个问题啊?重赏啊!!!! 公告: 从现在开始封shines 111222 :)流芳斑主,结贴的工作要开始了,会很累啊!我代表大家先谢谢你了! 怎样改变MSHflexgrid中每条记录的背景颜色。急急急急急急急 各位,能不能给我讲一下“句柄”是怎么一回事? 唉,心情不爽 关于C++语法的问题? 灌水-----大学时的恶作剧(转载) "setdibs()"是什么来着,请指教,谢谢! 写注释不宜过头 这段代码错在哪里? 请大家预测一下比分(参与者都有分)开赛后就不算了,还有半个小时,赶紧着 写网络电话程序的讨论 最后一帖,贴完睡觉----如何在电梯里捣乱 怎样定制一个在程序中重用的组件?只能通过包方式吗? 寻寻觅觅 汉英计算机科技文章 互译!!有劳各位朋友费心帮忙找找 我靠!真TMD不爽,这个时候准老婆的老妈进了医院! 怎样调用*.db格式文件 谁知道哪儿有英汉互译,急急急急!!!! ISO 9001认证 VS CMM2 谁知道哪儿有《神秘的人月》下载? 为111222求情 怎样可以修改浏览器的标题? 怎样可以修改浏览器的标题1? 哪位能给我一个source insight 3.0的sn号? 怎样可以修改浏览器的标题2? 如何异步调用远程组件的方法? 哈哈!球赛开始了!我也不想去医院了!!!顶多明天挨顿骂! 上CSDN的有谁是七月份毕业,大家认识一下 我想问问,一个程序员的黄金年龄是多少? 解方程:75%x×2+3x打漏了一些东西:75%x×2+3x=90 (X-2500)*[8+(2900-X)/50*4]=5000 8.5x-3.5x=27.5 求方程 x+【X+1】+【X+2】+...【X+10-1】=75怎么解方程 解方程(4* (2900-X) / 50 +8 )(X-2500)=5000 0.1(X+2)-0.9=0.5这个方程怎么解 x—x÷10=7.74 解方程 (x-2500)(50分之x-2900乘以4+8)=5000 ×的2.5倍比它的1.8倍多9.8.求方程的解 75加10%x减15%x等于74 (2900-x-2500)(8+4x/50)=5000怎么算 方程:6乘9+3x=70怎么解? 75+百分之十X-百分之十五X=74 这个方程怎么解?250X=200*(6.75-X) 3x+0.9=3.3的方程怎么解 75%X➖10=2 这个解方程怎么算啊75%X➖10=2这个解方程怎么算啊 250X=200(6.75-X)怎么解,详细点,谢谢 3x-2.4=6.9 方程 X减百分之15X等于68 解方程 x÷250+x÷200=6.75这个方程怎么解, 方程-3x>-6的解是? 1.已知关于x的方程4x+2=-6的解比关于x的方程4x-2a=10的解小3,求关于x的方程4ax+5=-1的解.2.一个两位数,十位数与个位数之和是14,如果把十位数与个位数数字对调,得到的两位数比原数大36,则这个两 X/250+X/200=6.75 这题方程具体怎么解 请解这个方程:(9×0.7)×3x=1 方程x(4x+6)=9 方程(1-x-3)(x+1)=-6 这类方程怎么解?有什么技巧?陈出来后又有x又有x²,实在是求不出!感激不尽 方程8分之1x-4分之1=2分之1的解是() 8(×-6.2)=41.6(方程) 50%*x=40%*(x+20)这个方程怎么解?过程. 怎么解x-(6/1x-30)=8/7x这个方程怎样解 (X+1)*6=(X-1)*8这个方程咋解? 1/3(x+50)=40%x,这个方程怎么解 x-4/1x=(150-x)-30 这个方程怎么解?是四分之一!不是一分之四! 判断题“方程X-1.2=1.6的解是2.8”这句话对吗? 帮我解个方程:60×(X--1)=50×(X+0.2) x+4分之1x=30怎么解这个方程? 数学判断题:方程5+2x=16.2的解是5.6 60-x+18=53的方程怎么解 50 ÷x =10 方程式 20分之1x加30分之1x=1求方程怎么解? 18与X的15倍的和是63.用方程解. 3x+2.5(68-x)=180,3x+2(68-x)=180,2.5x+2.5(68-x)=180,这三道方程怎么解 x-(8/1+21)+6/1x-4=102这个方程怎么解 已卖出10盆花,没盆15元,又卖出x盆同样的花,共收入270元(列方程并求出方程的解) X-0.6=0.48的方程式怎么解X-0.6X=0.48的方程式怎么解 已知方程3(3x+3)—1=2x的解和3x+m=四分之m—27的解相同!求m的值 (100%-40%)X + 90 = 15% X 这个方程怎么解 42=0.5*6*(6*x)怎么解这个方程 已知方程3(3x+3)-1=2x的解与关于x的方程3m+m=m/4-27的解相同,求m的值. x+3=15怎么解?要方程! 方程x^2-|x|-6=0的解是 已知方程3(x+3-1)=2x的解与关于x的方程3x+m=3m-27的解相同,求m的解 解方程:x/60 +2=x/45 解一下方程;2(x+0.6)=3(x-0.1) 8(x-3)-5x=27类似的方程跪求!有的话给我发十道 (X-45)*60% =45 + (X-45)*40% 怎么解方程 (18+x)/(48+x)=40%这个方程的过程怎么求? (x-3)+5x=27用方程解 60%-40%x=45解方程 求解方程:200(x-15)=200*5+80(x-5) 要有过程 谢谢 8(x-3)-5x=27方程怎么做?完整无误!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn