使用PROUTIL转储数据库

问题描述 投票:0回答:2

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

PROUTIL db1 -C DUMP "C:\var".
openedge progress-4gl progress-db
2个回答
3
投票

没有。没有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权限等等。


0
投票

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

Using ABL Code Using Data Dictionary/Data Administration

© www.soinside.com 2019 - 2024. All rights reserved.