VFP数据库的备份和恢复.doc

VFP数据库的备份和恢复.doc

ID:57609973

大小:39.00 KB

页数:6页

时间:2020-08-28

VFP数据库的备份和恢复.doc_第1页
VFP数据库的备份和恢复.doc_第2页
VFP数据库的备份和恢复.doc_第3页
VFP数据库的备份和恢复.doc_第4页
VFP数据库的备份和恢复.doc_第5页
资源描述:

《VFP数据库的备份和恢复.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VFP数据库:Howto备份与恢复VFP数据库文件的备份形式一般有两种,一种是以记录格式,即以VFP表格(.dbf)进行存储,这种方法的优点是表的数据被按照原样进行备份,备注字段、通用字段等特殊字段不必进行特殊处理即可很容易地实现数据备份和数据恢复,缺点是记录格式一旦丢失,将造成记录无法恢复;另一种是将记录以文本格式进行备份,优点是文本数据比较稳定,不容易被损坏,缺点是备注字段、通用字段等特殊字段需要进行特殊处理,不容易实现自动备份和恢复。小型数据库备份与恢复的原理  本文所说的小型数据库是指库文件容量

2、不超过一张磁盘的数据库,对这种数据库,我们常用的备份方法是用:Copyto<路径backup1>命令直接拷贝库记录,并生成backup1.dbf的表文件,如果原数据表有备注字段还会同时生成一个名为backup1.fpt的备注文件,我们再用Copyindexindexfilenameto<目标路径filename1>命令备份索引文件即可。  第二种方法是用Copyto<路径backup1.txt>命令将原数据表备份成为一个文本文件backup1.txt,并用Copystructureto<路径ba

3、ckup1>命令将原数据表的结构备份为backup1.dbf,如果原数据表有备注字段的话也会生成备注文件backup1.fpt。注意在存储成文本文件时,如原数据表有备注字段时,拷贝命令不要用Copyto<路径backup1.txt>sdf,因为这样无法生成备注文件backup.fpt。恢复的办法是用Copystructureto命令恢复库结构,再用Appendfrom<路径backup1.txt>命令,即可将数据记录包括备注字段一并恢复。注意这种情况下一定要保证备份时生成的备注文件backup1.f

4、pt是完好的。大型数据库备份与恢复的原理  1.问题的提出  在一个系统中,当一个库文件大于1.44Mb时,无法用一张软盘进行备份时,本文称之为大型数据库的备份与恢复问题,这恰恰是最常见的情况。  2.分析  用Copyto〈路径filename〉[〈scope〉]命令可以将目前工作区中数据库的记录全部或部分拷贝到目标数据库文件中去。〈file〉是目标文件名,如果不给目标文件指定扩展名的话,系统默认扩展名为.dbf;用〈scope〉关键字控制记录拷贝操作,将适当的记录数备份到软盘上,这样就可以解决一张

5、磁盘装不下的问题。而恢复的动作正好相反,只要利用命令将备份到各个磁盘的数据记录合并就可以了。  3.具体实现步骤  (1)对容量进行计算  设定默认路径为软盘所在驱动器,用diskspace()函数计算备份软盘的剩余空间,用recsize()函数对需要备份的数据库中的每条记录长度进行计算,然后用测试得的磁盘可用空间除以记录的长度,确定该软盘剩余空间能够备份数据库中多少条记录,当然这是最理想的情况即没有备注字段等特殊字段,否则还得考虑每条备注字段的大小。  (2)将指定的数据记录备份到软盘  如果磁盘空间

6、所能备份的记录数目大于数据库现有的实际记录数目时,直接用Copyto〈file〉备份。否则先移动记录指针到开始备份的记录号上,然后用Copyto〈file〉Next〈备份记录数〉备份,下一张盘备份时,让指针后移到需备份的记录处。  (3)作好备份盘号、记录数等标记  为了备份盘管理和以后恢复时能够按正确的顺序进行,我们在拷贝完后,要将每一张盘的备份情况存入备份设置文件Bak.dbf中,以便恢复程序能够识别备份盘。  (4)恢复过程  恢复时读取备份设置文件以确认插入正确的备份磁盘,将原库中的记录全部删除

7、,直接用Append命令将备份盘上的数据加入到数据库中,当考虑库结构损坏时,先恢复库结构再恢复数据。备份与恢复示例  1.以数据表的形式进行备份  建立一个Bak.dbf文件(程序中需要用到),其数据库结构如下:字段名字段类型宽度diskinfo字符10diskno整型4  (1)备份程序  以数据表的形式进行备份的程序如下:  settalkoffsetsafeoffcleaNUMOFDISK=0sele1use<备份的数据库的路径+名称>RECSIZE=RECSIZE()+2800RECOUNT=R

8、ECCOUNT()sele2use<路径Bak.dbf>zapsele1GOTOPdowhil.not.eof()?'请插入第'+STR(NUMOFDISK+1,3,0)+'张备份盘,然后按任意键继续'wait''SETDEFATOA:DISKSP=DISKSPACE()RECNUM=DISKSP/RESIZEFILE=SYS(3)FILENAME='A:'+FILECOPYTO&&FILENAMENEXTRECNUMSETDEFATO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。