【问题标题】:In OpenEdge, how do you transfer parts of the data in the database in an easy way?在 OpenEdge 中,如何轻松传输数据库中的部分数据?
【发布时间】:2014-07-01 17:08:51
【问题描述】:

我在 2 个不同的数据库和许多不同的表中有很多数据,我想从一台计算机转移到其他几台计算机。其他人对 db:s 的定义相同。注意,不是所有的数据都应该被传输,只有我定义的一些数据。有些表是完整的,有些只是部分的。

如何以最简单的方式移动这些数据?转储每个表并在许多 .d 文件中分别加载 - 这不是一种简单的方法。你能做一些类似于包含所有需要更改的增量 .df 文件的事情吗?

【问题讨论】:

    标签: progress-4gl openedge


    【解决方案1】:

    转储(和加载)整个表很容易。您可以从 GUI 或命令行执行此操作。例如,查看关于命令行转储和加载的 this KnowledgeBase 条目和关于创建用于转储整个数据库的脚本的 this

    部分数据是另一回事。这是非常个性化的,取决于您的数据库和应用程序。通用工具很难比较数据并判断数据差异是否取决于更改的数据、添加的数据或删除的数据。不同的数据库有不同的布局、键和索引。

    然而,有几个内置命令可以帮助您:

    例如:

    IMPORTEXPORT 用于将数据导入和导出到文件、流等。

    基本导入和导出

    OUTPUT TO c:\temp\foo.data.
    FOR EACH foo NO-LOCK:
      EXPORT foo.
    END.
    OUTPUT CLOSE.
    
    INPUT FROM c:\temp\foo.data.
    REPEAT:
      CREATE foo.
      IMPORT foo.
    END.
    INPUT CLOSE.
    

    BUFFER-COPYBUFFER-COMPARE 用于在表(甚至可能是数据库)之间复制和比较数据。

    您还可以使用内置命令进行“转储”,然后手动编辑创建的文件。

    内置命令调用进度

    您可以调用从数据管理中转储数据的后端。这将要求您从其档案中提取这些 .p 文件并手动调用它们。这还需要您更改 PROPATHS 等,因此并不简单。您还可以考虑根据需要修改提取的文件。请记住,升级 Progress 时这可能会中断,因此请将您的更改存储在单独的文件中。

    查看此 Progress KB 条目: Progress KB 15884

    最适合您的方式取决于这是一次性任务还是重复任务、数据库的大小和布局等。

    【讨论】:

    • 那么导入foo.d的代码是什么? (从数据管理中转储)在您完成“FOR EACH foo: DELETE foo.END.”之后。
    • 1) 使用数据管理加载数据。 2)编辑文件(它包含一些以 . [newline] PSC 等开头的尾随信息,然后简单地导入它。3)编写一个使用 IMPORT [table] 但忽略文件末尾的信息的程序 4)使用二进制转储和加载,它可以通过命令行(PROUTIL 命令)来完成。
    • 你也可以看看这个:knowledgebase.progress.com/articles/Article/… (dumpspecified)
    • 还添加了有关调用 Progress 自己的后端转储数据的信息。这可能是您的最佳选择。
    • 未找到数据管理的存档。文件的输出/输入工作完美。谢谢!我现在将制作 savedata.p/loaddata.p 文件来导出和导入我想要的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多