You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行时复制已连接的Progress数据库文件并立即操作是否可行?

从已连接Progress数据库创建文件副本并立即操作的可行性

完全可行,你的代码框架思路正确,以下是关键细节和注意事项:

  • Schema复制的可靠性:你调用的copyCurrentDatabaseToNewFileBasedDatabase.p需要精准复制原库的表结构、索引、约束等元数据但不包含业务数据。实现这个程序时,推荐两种方式:

    • 读取Progress系统表(如_File、_Field、_Index)生成DDL语句,再在新库执行;
    • 使用Progress自带的proutil工具:先通过proutil mydb -c dump schema导出原库schema,再用proutil C:\mydatabase\mydatabase.db -c load schema导入到新库,这种方式官方支持,兼容性更好。
  • 数据库连接切换:代码中断开原库再连接新库的逻辑没问题。注意CONNECT命令的参数:如果是本地文件库,可简化为-db C:\mydatabase\mydatabase.db -l(本地模式),无需指定主机和服务端口;如果要用客户端/服务器模式,需确保指定的服务端口(20000)已经对应启动了新数据库的服务进程。

  • 数据填充与查询:连接新库后执行数据填充和查询操作完全没问题,只需确保populateCopyDatabase.p和queryCopyDatabase.p中的操作针对当前活跃连接(默认连接或明确指定新库别名)。

格式化后的示例代码(example.p)

/* 复制当前连接的'mydb'数据库到新.db文件,仅保留schema不含数据 */
RUN copyCurrentDatabaseToNewFileBasedDatabase.p("mydb", "C:\mydatabase\mydatabase.db").

/* 断开与原'mydb'数据库的连接 */
DISCONNECT mydb.

/* 连接到复制完成的空数据库 */
CONNECT VALUE("-db C:\mydatabase\mydatabase.db -H localhost -S 20000").

/* 为副本数据库填充数据 */
RUN populateCopyDatabase.p.

/* 在已填充的副本上执行查询操作 */
RUN queryCopyDatabase.p.

内容的提问来源于stack exchange,提问作者W0lfw00ds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:45:17