【问题标题】:How to extract sql code from Knime Nodes?如何从 Knime 节点中提取 sql 代码?
【发布时间】:2022-10-25 14:08:55
【问题描述】:

有没有办法自动从节点中提取代码并将其保存在 .sql 或 .txt 文件中? 我主要使用数据库 SQL 执行器(旧版)我有 sql 查询的节点。 我发现每个节点都有 settings.xml 文件,我可以在其中将代码视为价值为了键=“声明”,也许我可以使用XML 阅读器XPath节点不知何故?

我希望每个节点都有 .sql 或 .txt 文件,该文件应包含粘贴在该特定节点中的 sql 代码。如果我可以选择该文件的名称作为节点的名称,那就太好了。

【问题讨论】:

    标签: sql xml rcpp explorer knime


    【解决方案1】:

    Vernalis 社区贡献有一个DB to Variable 节点。如果将输入端口类型更改为DB Data Port,则输出变量之一将是 SQL 查询。如果您使用的是 Legacy 节点,则相应的 Database To Variable (Legacy) 节点将用于同一件事。

    在变量中包含 SQL 后,您可以使用 Variable to Table Row 节点,然后使用例如Vernalis Save File Locally 节点,或者如果您需要更多选项,String to Binary ObjectsBinary Objects to Files 节点将允许

    【讨论】:

    • 谢谢你,尽管如果我理解正确,我将不得不将每个节点单独更改为变量或尝试创建某种循环,我认为这将需要我重建我工作的工作流的整个结构,因为我的工作流最多100 多个节点,其中包含多行代码。
    • 在这种情况下,使用 List Files 节点列出工作流中的所有 settings.xml 文件,然后使用一系列 Load text-based filesString to XMLXPath 节点将相对轻松地完成大部分您想要的操作
    【解决方案2】:

    我决定分享我解决该问题的想法,也许其他人想以类似的方式做这样的事情。

    我不得不与 RStudio 合作,并决定用 Rcpp 语言编写一个脚本(奇怪的 cpp 版本,允许您在其中锚定 R 脚本)。 脚本有一条通往 Knime 工作流的路径,并遍历每个 Node 文件夹以搜索“Databse SQL Executor”和“Database Reader”节点。 然后从 settings.xml 文件中提取节点的 sql 代码和名称。 将其保存到变量后,它会从 Windows 文件名中不允许的符号(如 ? : | / 等)或 xml 添加的内容中清除节点名称。 sql 代码也是如此,但不是清除 xml 内容,而是将其更改为符号的正常版本(例如,它将 %%000010 更改为 &lt 更改为 <

    当 sql 代码被清除并格式化时,它会将代码保存在一个 .sql 文件中,该文件的名称为节点的波音名称。

    它工作得很好而且很快。一个令人讨厌的问题是 rcpp 不读取 UTF-8 符号,因此我必须手动将它们从节点名称中清除,以便名称可读且不包含一些废话。

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多