有没有办法转储整个数据库?我尝试过使用这个PROUTIL命令,但它似乎不起作用:
PROUTIL db1 -C DUMP "C:\var".
没有。没有proutil命令的版本可以在单个命令中转储整个数据库。
您需要创建一个脚本来单独转储每个表。一种(简单)方法是这样的:
output to value( "dumpall.sh" ).
for each _file no-lock where _tbl-type = "t":
put unformatted "_proutil " pdbname(1) " -C dump " _file-name " ." skip.
end.
output close.
(Progress元模式将表称为“文件”,因为SQL命名法在80年代早期并没有完全占据世界._tbl-type之后被引入。类型“t”是一个普通的应用程序表,“v”是一个虚拟表,“s”是系统表。你不想转储“v”或“s”,proutil也不会转储它们。)
以这种方式转储(并重新加载)一个小型演示数据库非常简单。但是,如果您正在使用更大的数据库(如100GB生产数据库),则可以对此方法进行许多可能的改进。除了原始表数据之外,还有许多其他内容。具体情况因应用程序而异(并非所有人都使用数据库的每个功能),但也需要转储和重新加载序列值,用户和SQL权限等等。
有许多链接描述了如何执行此操作。