VFP数据库恢复数据的问题我的数据库出
可能比较困难,建议以后在做数据库处理之前先进行备份,以下为备份与恢复方式:
以数据表的形式进行备份
建立一个Bak。dbf文件(程序中需要用到),其数据库结构如下:
字段名 字段类型 宽度
diskinfo 字符 10
diskno 整型 4
(1)备份程序
set talk off
set safe off
clea
NUMOFDISK=0
sele 1
use
RECSIZE=RECSIZE()+2800
RECOUNT=RECCOUNT()
sele 2
use
zap
sele 1
GO TOP
t。 eof()?'请插入第'+STR(NUMOFDISK+1,3,0)+'张备...全部
可能比较困难,建议以后在做数据库处理之前先进行备份,以下为备份与恢复方式:
以数据表的形式进行备份
建立一个Bak。dbf文件(程序中需要用到),其数据库结构如下:
字段名 字段类型 宽度
diskinfo 字符 10
diskno 整型 4
(1)备份程序
set talk off
set safe off
clea
NUMOFDISK=0
sele 1
use
RECSIZE=RECSIZE()+2800
RECOUNT=RECCOUNT()
sele 2
use
zap
sele 1
GO TOP
t。
eof()?'请插入第'+STR(NUMOFDISK+1,3,0)+'张备份盘,然后按任意键继续'
wait''
SET DEFA TO A:
DISKSP=DISKSPACE()
RECNUM=DISKSP/RESIZE
FILE=SYS(3)
FILENAME='A:\'+FILE
COPY TO &&FILENAME NEXT RECNUM
SET DEFA TO
NUMOFDISK=NUMOFDISK+1
SELE 2
APPEND BLANK
REPL DISKINFO WITH FILE
REPL DISKNO WITH NUMOFDISK
SELE 1
enddo
?'备份完毕,共'+str(NUMOFDISK,3,0)+'张磁盘'
close all
return
(2)恢复程序
set talk off
set safe off
clea
sele 1
use
zap
sele 2
use
t。
eof()?'请插入第'+STR(DISKNO,3,0)+'张恢复盘,然后按任意键继续'
wait''
BACKUP='A:\'+DISKINFO
IF 。NOT。 FILE(BACKUP)
?'磁盘不对'
LOOP
ENDIF
SELE 1
APPE FROM &&BACKUP
SELE 2
SKIP
enddo
?'恢复完毕,共'+str(diskNO,3,0)+'张磁盘'
close all
return
这个程序只是一个理想化程序,即源数据表没有备注字段(该字段直接影响到磁盘空间的计算),也不考虑被备份的数据表的索引字段,以及在该表库结构损坏时的情况。
在有备注字段的情况下,备注文件(backup1。fpt)预留出512字节的空间用于存放格式描述等再加上每条记录备注字段的大小,即lenth( 备注字段名)。如考虑每条记录备注字段的实际长度, 我们可在备注字段的验证规则中加入“len(备注字段名)<最大值”的判断语句,这样既便于计算磁盘空间又便于数据维护。
当考虑数据库结构损坏的情况时,要先恢复库结构,接着恢复索引,最后再恢复数据。
另:有一个以隔离。CDX的方法恢复数据的方式,也许能帮上点忙,可供参考见附件。可先以记事本方式打开,查看源代码。
收起