Dump/Load
Добавлено: 25 мар 2005, 17:17
Приветствую Всех кто мог бы помочь!
Проблема следующая,
Была БД из 20 томов по по гигу на том.
Както начала выдавать сообщение на тему база повреждена,выгрузите и загрузите данные.
Что и сделали.
Выгрузились файлы с данными объемом 16 гигов.
Dump делали текстовый типа
def var i as int.
for each _file where _Tbl-Type = 'T' no-lock.
output to value("dump.p").
put unformatted
"def var i as int init 0." skip
"def var j as int init 1." skip
"DEFINE STREAM fl." skip
"output stream fl to value('dump.log') append." skip
"for each " _file-name " no-lock." skip
"if i = 0 then output to value('" _file-name + ".' + string(j))." skip
"i = i + 1." skip
"export " _file-name "." skip
"if i = 120000 then do:" skip
"put stream fl unformatted '" _file-name + ".' + string(j) + ' = ' i skip." skip
"i = 0. j = j + 1." skip
"output close." skip
"end." skip
"end." skip
"if i <> 0 and i <> 120000 then put stream fl unformatted '" _file-name + ".' + string(j) + ' = ' i skip." skip
"output stream fl close." skip.
output close.
compile dump.p save.
run dump no-error.
if error-status:error then do i = 1 to error-status:num-messages:
displ error-status:get-message(i). pause.
end.
end.
Но когда делали загрузку пришлось увеличить базу еще на 2 тома :
так как эти 16 гигов не поместились.
Загрузку делали так:
def var i as int.
output to value('log.txt').
put today string(time, "HH:MM:SS").
output close.
for each _file where _Tbl-Type = 'T' no-lock.
output to value("load.p").
put unformatted
"def var i as int init 0 label 'Record'." skip
"def var j as int init 1." skip
"def var v-file as char." skip
"DEFINE STREAM fl." skip
"v-file = '" _file-name + ".' + string(j)." skip
"output stream fl to value('log.txt') append." skip
"repeat while search(v-file) <> ?." skip
" displ v-file format 'x(76)'. pause 0." skip
" input from value(v-file)." skip
" repeat:" skip
" i = i + 1." skip
" create " _file-name "." skip
" import " _file-name "." skip
" displ i with overlay centered side-labels row 18 1 down. pause 0." skip
" end." skip
" put stream fl unformatted v-file ' = ' i skip." skip
" j = j + 1." skip
" v-file = '" _file-name + ".' + string(j)." skip
" i = 0." skip
"end." skip
"output close." skip
"output stream fl close." skip.
output close.
compile load.p save.
run load no-error.
if error-status:error then
do i = 1 to error-status:num-messages:
displ error-status:get-message(i). pause.
end.
end.
output to value('log.txt') append.
put today string(time, "HH:MM:SS").
output close.
Кто может сказать , ПОЧЕМУ?!?[/b]
Если это из-за фрагментации, то как можно провести дефрагментацию?!?
Проблема следующая,
Была БД из 20 томов по по гигу на том.
Както начала выдавать сообщение на тему база повреждена,выгрузите и загрузите данные.
Что и сделали.
Выгрузились файлы с данными объемом 16 гигов.
Dump делали текстовый типа
def var i as int.
for each _file where _Tbl-Type = 'T' no-lock.
output to value("dump.p").
put unformatted
"def var i as int init 0." skip
"def var j as int init 1." skip
"DEFINE STREAM fl." skip
"output stream fl to value('dump.log') append." skip
"for each " _file-name " no-lock." skip
"if i = 0 then output to value('" _file-name + ".' + string(j))." skip
"i = i + 1." skip
"export " _file-name "." skip
"if i = 120000 then do:" skip
"put stream fl unformatted '" _file-name + ".' + string(j) + ' = ' i skip." skip
"i = 0. j = j + 1." skip
"output close." skip
"end." skip
"end." skip
"if i <> 0 and i <> 120000 then put stream fl unformatted '" _file-name + ".' + string(j) + ' = ' i skip." skip
"output stream fl close." skip.
output close.
compile dump.p save.
run dump no-error.
if error-status:error then do i = 1 to error-status:num-messages:
displ error-status:get-message(i). pause.
end.
end.
Но когда делали загрузку пришлось увеличить базу еще на 2 тома :
так как эти 16 гигов не поместились.
Загрузку делали так:
def var i as int.
output to value('log.txt').
put today string(time, "HH:MM:SS").
output close.
for each _file where _Tbl-Type = 'T' no-lock.
output to value("load.p").
put unformatted
"def var i as int init 0 label 'Record'." skip
"def var j as int init 1." skip
"def var v-file as char." skip
"DEFINE STREAM fl." skip
"v-file = '" _file-name + ".' + string(j)." skip
"output stream fl to value('log.txt') append." skip
"repeat while search(v-file) <> ?." skip
" displ v-file format 'x(76)'. pause 0." skip
" input from value(v-file)." skip
" repeat:" skip
" i = i + 1." skip
" create " _file-name "." skip
" import " _file-name "." skip
" displ i with overlay centered side-labels row 18 1 down. pause 0." skip
" end." skip
" put stream fl unformatted v-file ' = ' i skip." skip
" j = j + 1." skip
" v-file = '" _file-name + ".' + string(j)." skip
" i = 0." skip
"end." skip
"output close." skip
"output stream fl close." skip.
output close.
compile load.p save.
run load no-error.
if error-status:error then
do i = 1 to error-status:num-messages:
displ error-status:get-message(i). pause.
end.
end.
output to value('log.txt') append.
put today string(time, "HH:MM:SS").
output close.
Кто может сказать , ПОЧЕМУ?!?[/b]
Если это из-за фрагментации, то как можно провести дефрагментацию?!?