使用 PROUTIL 转储数据库

Dumping Database with PROUTIL

有没有办法转储整个数据库?我试过使用这个 PROUTIL 命令,但它似乎不起作用:

PROUTIL db1 -C DUMP "C:\var".

有许多链接描述了如何执行此操作。

Using ABL Code
Using Data Dictionary/Data Administration

没有。没有可以在单个命令中转储整个数据库的 proutil 命令版本。

您需要创建一个脚本来单独转储每个 table。一种(简单的)方法是这样的:

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 元模式将 table 称为 "files",因为 SQL 命名法在 80 年代初期还没有完全接管世界。_tbl 类型是在很晚之后引入的.类型"t"是普通应用table,"v"是虚拟table,"s"是系统table.你不想要转储 "v" 或 "s" 而 proutil 无论如何都不会转储它们。)

以这种方式转储(并重新加载)小型演示数据库非常简单。但是,如果您使用的是更大的数据库(例如 100GB 的生产数据库),则可以对这种方法进行很多改进。除了涉及原始 table 数据之外,还有很多其他内容。具体细节因应用程序而异(并非每个人都使用数据库的每个功能),但需要转储和重新加载序列值、用户和 SQL 权限等也很常见。