KNIME数据库扩展指南
介绍
KNIME数据库扩展提供了一组KNIME节点,这些节点允许连接到JDBC兼容的数据库。这些节点位于“节点存储库”中的“*数据库”*类别中,您可以在其中找到许多数据库访问,操作和编写节点。
数据库节点是每个KNIME Analytics Platform安装的一部分。不需要安装任何其他的KNIME扩展。
本指南描述了KNIME数据库扩展,并除其他外,展示了如何连接到数据库以及如何在数据库内部执行数据操作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKRwmO0Z-1615987554128)(C:\Users\nn\Desktop\FaceImage\010_overviewdb.png)]
图1.使用数据库节点的示例工作流程
端口类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYM7lmKC-1615987554143)(https://docs.knime/2020-12/db_extension_guide/img/010_port.PNG)]
图2.两种类型的数据库端口
数据库扩展中有两种类型的端口:“数据库连接”端口(红色)和“数据库数据”端口(深红色)。
的DB连接有关当前DB会话,端口存储信息,例如数据类型,连接属性,JDBC性能,驱动器信息等
该DB数据端口不仅包含DB会话,还DB数据对象,这是一个SQL查询描述。
出口视图
执行数据库节点后,您可以在输出视图中检查结果,方法是右键单击该节点,然后在菜单底部选择要检查的输出。有关如何执行节点的更多信息,请参阅《 快速入门指南》。
数据库连接输出视图
数据库连接的输出视图具有“*数据库会话”*选项卡,其中包含有关当前数据库会话的信息,例如数据库类型和连接URL。
数据库数据输出视图
当执行具有DB数据输出端口的数据库操作节点(例如DB GroupBy节点)时,该节点要做的是构建必要的SQL查询以执行用户选择的GroupBy操作并将其转发到工作流中的下一个节点。它实际上并不执行查询。但是,可以通过DB Data Outport视图检查中间结果的子集。除了有关数据库会话的信息外,数据库数据输出视图还包含输出数据的预览和说明。
出口视图中的“表预览”选项卡在开始处显示一个空表。单击缓存号。行数: 将执行中间SQL查询并缓存输出的子集,然后将其显示在输出视图中。默认情况下,仅前100行被缓存,但是您可以在顶部设置自己的值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jWmtl68H-1615987554163)(https://docs.knime/2020-12/db_extension_guide/img/010_outport-cache.PNG)]
图3.带有检索到的行的DB Outport视图
根据SQL查询的复杂性,缓存前100行可能会花费很长时间。 | |
---|---|
可以在“*数据库规范”*选项卡中检查表规范。它包含表中的列的列表,以及它们的数据库类型和相应的KNIME数据类型(有关数据库类型和KNIME类型之间的类型映射的更多信息,请参阅“类型映射”部分。为了获取表规范,则仅在节点的配置过程中或执行期间执行仅获取元数据而不查询数据本身的查询,可以通过连接器节点的“高级”选项卡禁用在配置过程中执行元数据查询。
“*数据库查询”*选项卡包含中间SQL查询,该查询定义了此出口处的数据。该查询由在前面的数据库节点中创建的查询组成,并且仅当您想在KNIME数据表中(例如,使用DB Reader节点)检索结果时才执行查询。
会话处理
数据库会话生命周期由连接器节点管理。执行连接器节点将创建一个数据库会话,而重置该节点或关闭工作流程将破坏相应的数据库会话。
连接到数据库
节点存储库中的DB →连接子类别包含
- 一组用于特定数据库的特定于数据库的连接器节点,例如Microsoft SQL Server,MySQL,PostgreSQL,H2等。
- 以及通用的数据库连接器节点。
连接器节点通过其JDBC驱动程序创建与数据库的连接。在连接器节点的配置对话框中,您需要提供信息,例如数据库类型,数据库的位置以及身份验证方法(如果可用)。
特定于数据库的连接器节点已经包含必需的JDBC驱动程序,并提供了针对特定数据库量身定制的配置对话框。 如果可能,建议在通用DB连接器节点上使用这些节点。 | |
---|---|
连接到预定义的数据库
以下是一些具有自己专用的连接器节点的数据库:
- 亚马逊Redshift
- 亚马逊雅典娜
- Google BigQuery
- H2
- 微软Access
- Microsoft SQL服务器
- 的MySQL
- 甲骨文
- PostgreSQL的
- SQLite的
- Vertica
由于许可限制,某些专用的连接器节点(例如Oracle或Amazon Redshift)没有JDBC驱动程序。如果要使用这些节点,则需要首先注册相应的JDBC驱动程序。请参阅“注册自己的JDBC驱动程序”部分,以了解如何注册自己的驱动程序。对于Amazon Redshift,请参阅“ 第三方数据库驱动程序插件”部分。 | |
---|---|
如果您的数据库不存在专用的连接器节点,则可以使用通用的数据库连接器节点。有关此的更多信息,请参阅“连接到其他数据库”部分。
找到数据库的正确连接器节点后,双击该节点以打开配置对话框。在“*连接设置”*窗口中,您可以提供数据库的基本参数,例如数据库类型,方言,位置或身份验证。然后单击“*确定”*并执行该节点以建立连接。
KNIME Analytics Platform通常提供以下三种不同类型的连接器节点 :基于文件的连接器节点,基于服务器的连接器节点 和通用连接器节点,以下各节对此进行了说明。
基于文件的连接器节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ZMl0Y8t-1615987554189)(https://docs.knime/2020-12/db_extension_guide/img/020_h2.PNG)]图4. H2连接器配置对话框 | 左侧的图显示了基于文件的数据库(例如SQLite,H2或MS Access)的节点对话框的示例。最重要的节点设置如下所述:配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您可以提供现有数据库的路径,也可以选择 在内存中创建一个临时数据库,如果该数据库支持此功能,则该数据库将保留在内存中。 |
---|---|
基于服务器的连接器节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RKJjanqp-1615987554195)(https://docs.knime/2020-12/db_extension_guide/img/020_mssqlserver.PNG)]图5. MS SQL Server连接器配置对话框 | 左侧的图显示了基于服务器的数据库(例如MySQL,Oracle或PostgreSQL)的节点对话框的示例。最重要的节点设置如下所述。配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您应该提供托管数据库的计算机的主机名和端口,以及数据库的名称,数据库名称可能是可选的,具体取决于数据库。身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》。 |
---|---|
有关“ JDBC参数和高级”选项卡的更多信息,请参考“ JDBC参数和 高级”选项卡部分。“类型映射”选项卡在“类型映射”部分中进行了说明。 | |
---|---|
第三方数据库驱动程序插件
如前所述,专用于数据库的专用连接器节点已经包含必需的JDBC驱动程序。但是,某些数据库需要特殊的许可,这使我们无法自动安装甚至将必要的JDBC驱动程序与相应的连接器节点捆绑在一起。例如,KNIME提供了其他插件来安装需要特殊许可证的 正式Microsoft SQL Server驱动程序 或Amazon Redshift驱动程序。
要安装插件,进入文件→安装KNIME扩展…。在“*安装”*窗口中,搜索所需的驱动程序(MS SQL Server或Redshift),您将看到类似于下图的内容。然后选择插件进行安装。如果在此窗口中看不到该插件,则说明该插件已安装。安装插件后,重新启动KNIME。之后,当打开专用连接器节点的配置对话框时,应该在驱动程序名称列表中看到相应数据库的已安装驱动程序可用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Ehmoi1u-1615987554197)(https://docs.knime/2020-12/db_extension_guide/img/02_driver_marker.PNG)]
图6.安装窗口
连接到其他数据库
通用数据库连接器节点可以连接到任何兼容JDBC的数据库。最重要的节点设置如下所述。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uU3KOPyn-1615987554204)(https://docs.knime/2020-12/db_extension_guide/img/020_dbconnector.PNG)]
图7.数据库连接器配置对话框
数据库类型:选择节点将连接到的数据库的类型。例如,如果数据库是PostgreSQL派生数据库,则选择Postgres作为数据库类型。如果您不知道类型,请选择默认类型。
数据库方言:选择定义SQL语句生成方式的数据库方言。
驱动程序名称:为您的特定数据库选择适当的驱动程序。如果没有匹配的JDBC驱动程序,则首先需要对其进行注册,请参阅注册您自己的JDBC驱动程序。仅已为所选数据库类型注册的驱动程序可供选择。
数据库URL:特定于驱动程序的JDBC URL。在占位符中输入数据库信息,例如主机,端口和数据库名称。
身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》。
所选的数据库类型和方言确定支持哪些数据类型,语句(例如插入,更新和聚合功能)。 | |
---|---|
如果在连接第三方数据库时遇到错误,则可以在“高级”选项卡中启用JDBC记录器选项 。如果启用此选项,则所有JDBC操作都将写入KNIME日志中,这可能有助于您识别问题。为了调整KNIME与数据库的交互方式,例如引号标识符,您可以根据数据库的设置在“高级”选项卡下更改默认设置。例如,KNIME使用“作为默认标识符引用,某些数据库(例如Informix)默认不支持。要解决此问题,只需在Advanced Tab中更改或删除标识符定界符设置的值即可。
注册自己的JDBC驱动程序
对于某些数据库,KNIME Analytics Platform不包含现成的JDBC驱动程序。在这些情况下,必须首先在KNIME Analytics Platform中注册特定于供应商的JDBC驱动程序。请咨询您的数据库供应商以获取JDBC驱动程序。可以在下面找到一些最受欢迎的JDBC驱动程序的列表。
JDBC驱动程序必须符合 JDBC 4.1或 JDBC 4.2。 | |
---|---|
要在KNIME Server上设置JDBC驱动程序,请参阅KNIME Server上的JDBC驱动程序部分。
要注册特定于供应商的JDBC驱动程序,请转至文件→首选项→ KNIME →数据库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYQY2BKb-1615987554206)(https://docs.knime/2020-12/db_extension_guide/img/020_adddriver.PNG)]
图8. DB Preference页面
单击添加将打开一个新的数据库驱动程序窗口,您可以在其中提供JDBC驱动程序路径和所有必要的信息,例如:
-
ID:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。
-
Name:JDBC驱动程序的唯一名称。
-
数据库类型:数据库类型。如果选择特定的数据库类型(例如MySQL),则可以在专用连接器节点(例如MySQL Connector)中选择驱动程序。但是,如果数据库不在列表中,则可以选择default,这将为您提供Advanced Tab中的所有可用参数。注册为默认类型的驱动程序仅在通用DB连接器节点中可用。
-
说明:JDBC驱动程序的可选说明。
-
URL模板:专用连接器节点中使用的JDBC驱动程序连接URL格式。如果您在数据库类型中选择了默认数据库以外的其他数据库,则将使用所选数据库的默认模板来预设URL模板。请参阅下面的“ URL模板”语法信息或“ JDBC URL模板”部分以获取更多信息。
-
URL模板语法信息:单击问号将打开一个信息框,其中提供了有关URL模板语法的一般信息。此外,如果在“数据库类型”中选择默认数据库以外的数据库,则会为所选数据库类型提供一个或多个可能的URL模板示例,您可以在URL模板字段中复制和粘贴这些示例 。
-
Classpath:JDBC驱动程序的路径。如果驱动程序以单个.jar文件形式提供,则单击添加文件;如果驱动程序以包含多个.jar文件的文件夹形式提供,则 单击添加**目录。一些供应商提供.zip文件供下载,需要首先将其解压缩到文件夹中。
如果JDBC驱动程序需要本机库(例如DLL),则除了JDBC驱动程序.jar文件外,还需要将它们全部放入一个文件夹中,然后通过“*添加目录”*按钮注册该文件夹。 | |
---|---|
- 驱动程序类:单击查找驱动程序类将自动检测JDBC驱动程序类和版本。单击按钮后,请选择适当的班级。
如果您的数据库在“数据库类型”下拉列表中可用,则最好选择它而不是将其设置为default。将数据库类型设置为默认值将允许您仅使用通用DB连接器节点连接到数据库,即使该数据库有专用的连接器节点也是如此。 | |
---|---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ikg2jNC5-1615987554208)(https://docs.knime/2020-12/db_extension_guide/img/020_adddriver2.PNG)]
图9.注册新的数据库驱动程序窗口
KNIME Server可以自动将JDBC驱动程序分发给所有连接的KNIME Analytics Platform客户端(请参阅KNIME Server上的JDBC驱动程序)。 | |
---|---|
JDBC URL模板
注册JDBC驱动程序时,需要指定其JDBC URL模板,专用的Connector节点将使用该模板创建最终数据库URL。例如,jdbc:oracle:thin:@<host>:<port>/<database>
是Oracle瘦驱动程序的有效驱动程序URL模板 。对于大多数数据库,您不必自己查找合适的URL模板,因为 URL模板语法信息至少为数据库提供了一个URL模板示例。
在URL模板中的变量,例如的值<host>
,<port>
或者<database>
可以在相应的连接器节点的配置对话框中指定。
代币:
- 强制值(例如
<database>
):引用的令牌必须具有非空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。 - 可选值(例如
[database]
):引用的令牌可能具有空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。 - 条件(例如
[location=in-memory?mem:<database>]
):这适用于基于文件的数据库,例如H2或SQLite。?
如果条件为真,则第一个字符将条件与仅包含在URL中的内容分开。当前唯一可用的显式运算符是=
,以测试变量的确切值。左边的操作数必须是有效的变量名,右边的操作数是变量要包含的内容所必需的值。内容可能包括强制性令牌和/或可选令牌(<database>/[database]
),但没有条件部分。也可以测试是否存在变量。为此,请指定变量名称(例如数据库)作为条件。例如jdbc:mydb://<host>:<port>[database?/databaseName=<database>]
将导致jdbc:mydb://localhost:10000/databaseName=db1
如果在节点对话框中指定了数据库名称,则为jdbc:mydb://localhost:10000
。
对于基于服务器的数据库,应使用以下令牌:
- host:连接器节点的“*连接设置”*选项卡上“主机名”字段的值。
- port:连接器节点的“*连接设置”*选项卡上“端口”字段的值。
- database:连接器节点的“*连接设置”*选项卡上“数据库名称”字段的值。
对于基于文件的数据库,应使用以下令牌:
- location:连接器节点的“连接设置”选项卡上的“位置”选项。文件值对应于选中Path旁边的单选按钮,内存对应于In-memory旁边的单选按钮。该变量只能在条件中使用。
- file:连接器节点的“*连接设置”*选项卡上“*路径”*字段的值。仅当location的值为时,此变量才有效。
file
- database:连接器节点的“*连接设置”选项卡上的“**内存中”*字段的值。仅当location的值为时,此变量才有效。
in-memory
连接器节点的配置对话框中的字段验证取决于引用它们的(包含的)令牌是强制性的还是可选的(请参见上文)。 | |
---|---|
常见的JDBC驱动程序列表
以下是一些常用数据库驱动程序的选定列表,您可以在其中添加其他数据库驱动程序到KNIME Analytics Platform:
- 阿帕奇·德比(Apache Derby)
- Exasol
- Google BigQuery
- IBM DB2 / Informix
- 甲骨文
- SAP HANA
- 雪花
上面的列表仅显示了可以添加的数据库驱动程序的一些示例。如果您的驱动程序不在上面的列表中,仍然可以将其添加到KNIME Analytics Platform。 | |
---|---|
高级数据库选项
JDBC参数
JDBC参数允许您定义自定义JDBC驱动程序连接参数。参数的值可以是常量,变量,凭证用户,凭证密码或KNIME URL。有关支持的连接参数的更多信息,请咨询您的数据库供应商。
下图显示了具有不同变量类型的SSL JDBC参数的示例。您可以设置一个布尔值来启用或禁用SSL,也可以使用KNIME相对URL指向SSLTrustStore位置,或对trustStorePassword参数使用凭据输入。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-laEfvmqM-1615987554210)(https://docs.knime/2020-12/db_extension_guide/img/020_jdbcparam.PNG)]
图10. JDBC Parameters选项卡
进阶标签
通过“*高级”*选项卡中的设置,您可以定义KNIME框架属性,例如连接处理,高级SQL方言设置或查询日志记录选项。在这里,您可以调整KNIME与数据库的交互方式,例如应如何创建发送到数据库的查询。在“*元数据”*部分中,您还可以在配置节点期间禁用元数据获取,或在这样做时更改超时,如果您连接到需要更多时间来计算所创建查询的元数据的数据库,或者您已连接,则可能有必要通过慢速网络访问它。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXdexCU1-1615987554212)(https://docs.knime/2020-12/db_extension_guide/img/020_advanced.PNG)]
图11.高级选项卡
完整的可用选项描述如下:
- 验证查询:要执行的验证连接可用的查询。如果未指定查询,则KNIME调用Connection.isValid() 方法来验证连接。仅检查错误,不需要结果。
- CASE表达式:生成的语句中是否允许使用CASE表达式。
- CREATE TABLE CONSTRAINT名称:是否可以在CREATE TABLE语句中为CONSTRAINT定义定义名称。
- DROP TABLE语句:DROP TABLE语句是否是语言的一部分。
- 派生表引用:表引用是否可以派生表。
- 从查询插入表:是否支持通过select语句插入表,例如INSERT INTO T1(C1)(SELECT C1 FROM T2)。
- JDBC记录器:启用或禁用JDBC操作的记录器。
- JDBC语句取消:取消节点执行时启用或禁用JDBC语句取消尝试。
- 节点取消轮询间隔:两次检查节点执行是否已取消之间要等待的毫秒数。有效范围:[100,5000]。
- 在configure中检索:在数据库节点的configure方法中启用或禁用检索元数据。
- 检索配置超时:取消配置方法中的元数据检索之前要等待的时间间隔(以秒为单位)。有效范围:[1,)。
- 事务:启用或禁用数据库事务,例如提交/回滚。如果您要连接的数据库(例如Google Big Query或Dremio)不支持事务,请禁用此选项。
- CREATE“ temporary” TABLE语法:用于创建临时表的一个或多个关键字。
- CREATE TABLE“如果不存在”的语法:表创建语句条件“如果不存在”的语法。如果为空,则不会自动创建此类语句,尽管节点仍可能无法从原子上实现相同的行为。
- 提取大小:JDBC驱动程序的提示,当需要更多行时,应从数据库中获取行数。有效范围:[0,)。
- 还原数据库连接:加载已执行的连接器节点时,启用或禁用数据库连接的还原。
- 仅用空格分隔标识符:如果选中,则仅用空格分隔标识符,例如列或表名。
- 标识符定界符(关闭):标识符的闭合定界符,例如列名和表名。
- 标识符定界符(打开):标识符(例如列和表名*)的*打开定界符。
- 替换标识符中的非单词字符:是否替换标识符中的非单词字符,例如表名或列名。非单词字符包括字母数字字符(az,AZ,0-9)和下划线(_)以外的所有字符。
- 标识符非单词字符替换:启用标识符替换后,将替换标识符中的非单词字符。空值将删除非单词字符。
- 表参考关键字:表参考中相关名称之前的关键字。
- 将JDBC参数附加到URL:启用或禁用将参数附加到JDBC URL,而不是将其作为属性传递。
- 将用户名和密码附加到URL:启用或禁用将用户名和密码附加到JDBC URL,而不是将其作为属性传递。
- JDBC URL初始参数分隔符:表示JDBC URL中参数开始的字符。
- JDBC URL参数分隔符:在JDBC URL中分隔两个JDBC参数的字符。
- JDBC URL的最后一个参数后缀:在JDBC URL的最后一个参数之后附加的字符。
- 减号运算:是否支持减号设定操作。
专用的数据库连接器(例如Microsoft SQL Server连接器)通常仅显示上述选项的子集,因为大多数选项是预定义的,例如数据库是否支持CASE语句等。
例子
在本节中,我们将提供有关如何连接到一些广为人知的数据库的示例。
连接到Oracle
第一步是获取Oracle JDBC驱动程序。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPcblRod-1615987554214)(https://docs.knime/2020-12/db_extension_guide/img/020_driveroracle.PNG)]
图12.注册新的Oracle驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:Oracle,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Oracle,但是您可以输入自己的驱动程序名称。
- 数据库类型:下拉列表中提供Oracle,因此数据库类型设置为oracle。
- 说明:例如,我的Oracle驱动程序。
- URL模板:通过在“数据库”类型中选择oracle,URL模板将自动预设为Oracle的默认JDBC URL模板(服务名),即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:oracle:thin:@<host>:<port>/<database>
- 类路径:单击添加文件以添加Oracle JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
- 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为版本12.2.0中的oracle.jdbc.OracleDriver。
填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Oracle数据库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ABnDwYlo-1615987554218)(https://docs.knime/2020-12/db_extension_guide/img/020_driveroracle2.PNG)]
图13.数据库首选项页面
Oracle有一个专用的连接器节点,称为Oracle连接器,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库。
连接到Databricks
要连接到Databricks,您需要安装 KNIME Databricks Integration。
下一步是从官方网站下载Databricks Simba JDBC驱动程序 到您的计算机。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
KNIME为Databricks提供了Apache Hive JDBC驱动程序,您可以将其用作后备驱动程序。但是强烈建议使用上面链接中提供的官方JDBC驱动程序。 | |
---|---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DuWyLkkH-1615987554220)(https://docs.knime/2020-12/db_extension_guide/img/020_driverdatabricks.PNG)]
图14.注册新的Databricks驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:Databricks,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Databricks,但是您可以输入自己的驱动程序名称。
- 数据库类型:下拉列表中提供了Databricks,因此数据库类型设置为databricks。
- 说明:例如,我的Databricks驱动程序。
- URL模板:通过在“数据库”类型中选择databrick,URL模板将自动预设为Databricks的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:spark://<host>:<port>/default
- 类路径:单击添加文件以添加Databricks JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
- 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为2.6.0版本中的com.simba.spark.jdbc4.Driver。
填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8NpwcUEA-1615987554222)(https://docs.knime/2020-12/db_extension_guide/img/020_driverdatabricks2.PNG)]
图15.数据库首选项页面
要连接到Databricks,您需要首先创建一个连接到现有Databricks集群的Databricks环境。为此,请使用“*创建Databricks环境”*节点。在配置窗口中,您需要提供:
- Databricks URL:Databricks部署的完整URL,在AWS上为*https:// .cloud.databricks* 或在Azure上为*https:// .azuredatabricks*。
- 群集ID:Databricks工作区中群集的唯一标识符。
- 工作区ID:Azure上Databricks的工作区ID,在AWS上留空。
在“数据库端口” →“*驱动程序”*选项卡中,可以选择驱动程序名称,在本例中为我们之前注册的Databricks Simba JDBC驱动程序。
对于身份验证,Databricks强烈建议使用令牌。请参阅Databricks AWS或Azure 文档中的身份验证以获取有关个人访问令牌的更多信息。
连接到Google BigQuery
要连接到BigQuery,您需要安装 KNIME BigQuery Extension。
由于许可证限制,BigQuery JDBC驱动程序不是KNIME Analytics Platform的一部分,需要单独下载和注册。要下载BigQuery JDBC驱动程序,请访问 官方网站。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTtGRlNS-1615987554224)(https://docs.knime/2020-12/db_extension_guide/img/020_driverbigquery.PNG)]
图16.注册新的BigQuery驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:BigQuery,但您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:BigQuery,但是您可以输入自己的驱动程序名称。
- 数据库类型:BigQuery在下拉列表中可用,因此数据库类型设置为bigquery。
- 说明:例如,我的Google BigQuery驱动程序。
- URL模板:通过在“数据库”类型中选择bigquery,URL模板将自动预设为BigQuery的默认JDBC URL模板,即。请直接参考下面的URL模板语法信息或JDBC URL模板部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:bigquery://<host>:<port>;ProjectId=<database>
- 类路径:单击添加文件以添加BigQuery JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
- 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为1.2.0版中的com.simba.googlebigquery.jdbc42.Driver。
填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cyb7OnvH-1615987554225)(https://docs.knime/2020-12/db_extension_guide/img/020_driverbigquery2.PNG)]
图17.数据库首选项页面
要连接到BigQuery服务器,建议使用Google身份验证(API密钥)节点对Google API进行身份验证并创建连接,然后使用Google BigQuery Connector节点连接到BigQuery。另外,您也可以通过“ JDBC参数”选项卡指定特定于驱动程序的身份验证信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3fOFyb7C-1615987554227)(https://docs.knime/2020-12/db_extension_guide/img/020_connect_to_bigquery.PNG)]
图18.连接到BigQuery
在*Google身份验证(API密钥)*节点的配置窗口中,您需要提供:
- 服务帐户电子邮件:服务帐户的电子邮件地址。请参阅 BigQuery 文档,以获取有关如何创建服务帐户的更多信息。
- P12密钥文件位置:专用P12密钥文件的路径。创建服务帐户电子邮件时,您可以JSON或P12密钥/凭证的形式创建服务帐户密钥。请注意,此处仅支持P12键。
- 范围:将为此连接授予的范围。请参阅可用BigQuery API范围列表上的Google文档 。例如,选择Google BigQuery Connection可以查看和管理Google BigQuery中的数据。
*Google身份验证(API密钥)*节点 仅支持P12密钥! | |
---|---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fQHp1Fdt-1615987554229)(https://docs.knime/2020-12/db_extension_guide/img/020_google_auth_conf.PNG)]
图19. Google身份验证(API密钥)节点的配置窗口
连接成功后,它可以被用来作为输入谷歌服务连接了 谷歌的BigQuery连接器节点。配置窗口包含以下内容:
- 驱动程序名称:我们在注册驱动程序时先前提供的BigQuery驱动程序的名称。在我们的示例中是BigQuery。
- 主机名:Google BigQuery服务器的主机名(或IP地址)。
- 端口:Google BigQuery服务器正在监听的端口。默认端口是443。
- 数据库名称:您要连接的数据库的名称(项目ID)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g96kCTFG-1615987554231)(https://docs.knime/2020-12/db_extension_guide/img/020_bigquery_conf.PNG)]
图20. Google BigQuery Connector节点的配置窗口
连接到Microsoft SQL Server
默认情况下,专用的Microsoft SQL Server连接器节点与jTDS for Microsoft SQL Server驱动程序捆绑在一起。如果要使用Microsoft SQL Server的 官方驱动程序 ,则KNIME提供了一个附加插件来安装驱动程序。请参阅第三方数据库驱动程序插件以获取有关该插件及其安装方式的更多信息。
也可以使用您自己的Microsoft SQL Server驱动程序。要注册您自己的驱动程序,请参阅“注册您自己的JDBC驱动程序” 部分。但是,Microsoft SQL Server驱动程序可能需要几个本机库,例如DLL。在这种情况下,除了数据库驱动程序窗口中的JDBC文件之外,您还需要将所有必需的本机库复制到一个文件夹中,然后通过“*添加目录”*按钮注册此文件夹.jar
。如果您使用提供的Microsoft SQL Server jTDS驱动程序或通过插件安装的Microsoft SQL Server官方驱动程序,则不需要此步骤。
所有必需的文件(例如sqljdbc_auth.dll或ntlmauth.dll)都是提供的驱动程序的一部分。 | |
---|---|
安装JDBC驱动程序之后,可以使用Microsoft SQL Server连接器节点开始连接到Microsoft SQL Server。请参阅连接到预定义的数据库,以获取有关如何使用专用连接器节点进行连接的更多信息。
Microsoft SQL Server支持所谓的 Windows本机身份验证模式。如果要使用此模式,只需在配置窗口的“*身份验证”*设置中选择“ 无/本机身份**验证”。以下各节说明如何使用此模式,具体取决于您使用的驱动程序。
使用Microsoft SQL Server的官方驱动程序进行Windows本机身份验证
要将此模式与Microsoft SQL Server提供的官方驱动程序一起使用,KNIME Analytics Platform需要在Windows计算机上运行,并且您需要登录到要连接到的Microsoft SQL Server接受的Windows域中。此外,您需要在“ JDBC参数”选项卡中指定以下条目: 值为true的**IntegratedSecurity。有关更多详细信息,请参见 Microsoft文档。
使用Microsoft SQL Server的jTDS驱动程序进行Windows本机身份验证
如果您正在使用提供的用于Microsoft SQL Server的jTDS驱动程序,并且KNIME Analytics Platform在登录到要连接的Microsoft SQL Server接受的Windows域的Windows计算机上运行,那么您无需指定任何JDBC参数。
如果KNIME Analytics Platform在非Windows计算机上运行,则需要提供要用于身份验证的Windows域用户的用户名和密码。为此,请选择“*凭据”*选项或“*用户名和密码”选项。此外,还需要指定在以下条目JDBC参数标签: 域名与<< Windows域名>>*作为值。有关更多详细信息,请参见jTDS FAQ中对domain属性的描述,或参见README.sso。
连接到Apache Hive™
要连接到Hive,您需要安装 KNIME大数据连接器扩展。
默认情况下,专用的Hive连接器节点与开源Apache Hive JDBC驱动程序捆绑在一起。还支持专有驱动程序,但需要首先注册,例如Cloudera提供的Hive JDBC连接器。
在此示例中,我们要使用专有的Cloudera Hive JDBC驱动程序连接到Hive。第一步是为Cloudera Enterprise下载最新的 Hive JDBC驱动程序。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
图21.注册新的Apache Hive驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:cloudera_hive,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Cloudera Hive,但是您可以输入自己的驱动程序名称。
- 数据库类型:Hive在下拉列表中可用,因此数据库类型设置为hive。
- 说明:例如,我的Hive驱动程序。
- URL模板:请确保该字段包含
jdbc:hive2://<host>:<port>/[database]
。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。 - 类路径:单击添加文件以添加
.jar
包含Hive JDBC驱动程序的文件。驱动程序文件的路径将出现在Classpath区域中。 - 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本。请确保选择com.cloudera.hive.jdbc41.HS2Driver。
最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Hive数据库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A6ti3mxo-1615987554236)(https://docs.knime/2020-12/db_extension_guide/img/020_driverhive2.PNG)]
图22.数据库首选项页面
Hive有一个称为Hive Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库。
连接到Apache Impala™
要连接到Apache Impala,您需要安装 KNIME大数据连接器扩展。
默认情况下,专用的Impala连接器节点与开源的Apache Hive JDBC驱动程序捆绑在一起,该驱动程序与Impala兼容。还支持专有驱动程序,但需要先注册,例如Cloudera提供的Impala JDBC连接器。
在此示例中,我们想使用专有的Cloudera Impala JDBC驱动程序连接到Impala。第一步是为Cloudera Enterprise下载最新的 Impala JDBC驱动程序。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
图23.注册新的Apache Impala驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:cloudera_impala,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Cloudera Impala,但是您可以输入自己的驱动程序名称。
- 数据库类型:Impala在下拉列表中可用,因此数据库类型设置为impala。
- 说明:例如,我的Impala驱动程序。
- URL模板:通过在数据库类型中选择impala,URL模板将自动预设为Impala的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:impala://<host>:<port>/[database]
- 类路径:单击添加文件以添加
.jar
包含Impala JDBC驱动程序文件的文件。驱动程序文件的路径将出现在Classpath区域中。 - 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本,在本例中为com.cloudera.impala.jdbc.Driver。
最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Impala数据库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vzdwindw-1615987554240)(https://docs.knime/2020-12/db_extension_guide/img/020_driverimpala2.PNG)]
图24.“数据库首选项”页面
Impala有一个称为Impala Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库。
从数据库读取
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AFtil7Se-1615987554242)(https://docs.knime/2020-12/db_extension_guide/img/030_reading.PNG)]
图25.从数据库读取
上图是有关如何从数据库读取数据的示例。在此示例中,我们想将存储在H2数据库中的航班数据集读取 到KNIME数据表中。
首先,您需要一个连接器节点来建立与数据库的连接,在上面的示例中,它是一个H2数据库。根据我们要连接的数据库,有几个专用的连接器节点。有关如何连接到数据库的更多详细信息,请参阅“连接到数据库”部分。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M74Rn3Ie-1615987554244)(https://docs.knime/2020-12/db_extension_guide/img/030_tableselector-hidden.PNG)]图26. DB Table Selector配置对话框 | 建立连接后,下一步是使用DB Table Selector节点,该节点允许基于输入数据库连接以交互方式选择表或视图。左侧的图显示了“*数据库表选择器”*节点的配置对话框。在顶部,您可以输入架构和要选择的表/视图名称,在此示例中,我们要选择“航班”表。 |
---|---|
按下“*选择表”*按钮将打开“数据库元数据浏览器”窗口,其中列出了数据库中的可用表/视图。
此外,勾选“*自定义查询”*复选框将使您可以编写自己的自定义SQL查询来缩小结果范围。它接受任何SELECT语句,并且占位符#table#可用于引用通过“选择表格”按钮选择的表格。
该输入类型映射选项卡允许您定义的数据库类型映射规则KNIME类型。有关此的更多信息,请参考“类型映射”部分。
该节点的输出是一个DB Data连接,其中包含数据库信息,并且SQL查询由选择输入表或用户输入的自定义查询的框架自动构建。要在KNIME Analytics Platform中读取选定的表或视图,可以使用DB Reader节点。执行此节点将在数据库中执行输入的SQL查询,输出将是存储在KNIME数据表中的结果,该表将存储在运行KNIME Analytics Platform的计算机上。
数据库元数据浏览器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Np5KyUmk-1615987554246)(https://docs.knime/2020-12/db_extension_guide/img/030_metadata-cols.PNG)]图27.数据库元数据浏览器 | 数据库元数据浏览器显示数据库模式,包括所有表/视图及其对应的列和列数据类型。首先,它从数据库中获取元数据并将其缓存以备后用。通过单击一个元素(模式/表/视图),它可以显示所包含的元素。要选择表或视图,请选择名称,然后单击“确定”或双击元素。窗口顶部的搜索框使您可以搜索数据库中的任何表或视图。底部有一个刷新按钮,用于重新获取模式列表,并带有有关上一次刷新模式多长时间的时间参考。 |
---|---|
如果您刚刚创建了一个表,但是在架构列表中找不到该表,则可能是元数据浏览器缓存不是最新的,因此请尝试单击右下角的刷新按钮来刷新列表。 | |
---|---|
查询生成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bsLqzeWw-1615987554251)(https://docs.knime/2020-12/db_extension_guide/img/040_queryoverview.PNG)]图28. DB Query节点 | 成功连接到数据库后,将有一组节点提供数据库内数据操作,例如聚合,过滤,联接等。数据库节点具有可视化的用户界面,并 根据配置窗口中的用户设置在后台自动构建SQL查询,因此无需编码即可与数据库交互。每个节点的输出是一个SQL查询,该查询与该节点内执行的操作相对应。可以通过DB Data outport视图查看生成的SQL查询。 |
---|---|
可视查询生成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yzedCKQQ-1615987554253)(https://docs.knime/2020-12/db_extension_guide/img/040_querygeneration.PNG)]
图29.执行数据库内数据操作的工作流示例
上图显示了数据库内数据操作的示例。在此示例中,我们从H2数据库读取 航班数据集。首先,我们对行进行过滤,以便仅采用满足特定条件的排期。然后,我们计算到达每个唯一目的地机场的平均飞行时间。最后,我们将平均值与原始值结合在一起,然后将结果读入KNIME Analytics Platform。
第一步是连接到数据库并选择我们要使用的适当表。
数据库行过滤器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MXEOTH2n-1615987554254)(https://docs.knime/2020-12/db_extension_guide/img/040_rowfilter3.PNG)]
图30.“ DB行过滤器”配置对话框
选择表格后,您可以开始使用数据。首先,我们使用“ DB行过滤器”节点根据特定条件过滤行。上图显示了DB行过滤器的配置对话框。左侧有一个“预览”区域,该区域列出了要应用于输入数据的过滤器的所有条件。过滤器可以通过逻辑运算符(例如AND或OR)进行组合和分组。只有满足指定过滤条件的行才会保留在输出数据表中。底部有以下选项:
- 添加条件:在列表中添加更多条件
- 组:创建一个新的逻辑运算符(AND或OR)
- 取消分组:删除当前选择的逻辑运算符
- 删除:从列表中删除选定的条件
要创建新条件,请单击Add_Condition按钮。要编辑条件,请在条件列表中选择,它将在右侧的条件编辑器中显示所选条件。编辑器至少包含两个下拉列表。最左边的一个包含输入数据表中的列,其旁边的一个包含与所选列类型兼容的运算符,例如=,!=,<,>。根据选择的操作,将显示第三个(可能是第四个)输入字段,以输入或选择过滤器值。值字段旁边的按钮将获取所选列的所有可能值,然后可在值字段中进行选择。
单击“预览”列表中的逻辑运算符,将允许您在“与”或“或”之间进行切换,并可以通过单击“*取消分组”*来删除该运算符。
如我们的示例所示,我们希望返回满足以下条件的所有行:
- 源自芝加哥奥黑尔机场(ORD)或哈茨菲尔德-杰克逊亚特兰大机场(ATL)
- AND发生在2017年6月
- 并且在5到45分钟之间有轻微的到达延迟
数据库组
图31. DB GroupBy:手动聚合
下一步是使用DB GroupBy节点计算到达每个唯一目的地机场的平均飞行时间。要检索每个组的行数,请在“高级设置”中选中“*添加计数(*)”*复选框。可以通过结果列名称字段更改组计数列的名称。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bL0GIhVW-1615987554257)(https://docs.knime/2020-12/db_extension_guide/img/040_groupby.PNG)]
图32. DB GroupBy:组设置
要计算每个目标机场的平均飞行时间,我们需要按“*组”*选项卡中的“*目的地”*列进行 分组,然后在“*手动汇总”*选项卡中,选择“ ActualElapsedTime”列(空中时间)和AVG作为汇总方法。
数据库连接器
图33. DB Joiner:Joiner设置
为了将结果连接回原始数据,我们使用DB Joiner节点,该节点根据两个表的连接列来连接两个数据库表。在“ Joiner设置”选项卡中,有用于选择联接模式的选项,包括“内部联接”,“完全外部联接”等,以及“联接”列。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ayFfgJo-1615987554262)(https://docs.knime/2020-12/db_extension_guide/img/040_joiner2.PNG)]
图34. DB Joiner:列选择
在“*列选择”*选项卡中,可以从每个表中选择要包含在输出表中的列。默认情况下,底部输入的连接列不会显示在输出表中。
高级查询构建
有时,仅使用预定义的DB节点来操作数据库中的数据是不够的。本节将说明一些允许用户编写自己的SQL查询的数据库节点,例如DB Query,DB Query Reader和 Parametriczed DB Query Reader节点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TP8uPbBY-1615987554263)(https://docs.knime/2020-12/db_extension_guide/img/040_advancedquery.PNG)]
图35.具有高级查询节点的示例工作流
每个将DB数据对象作为输入并返回DB数据对象作为输出的DB操作节点,将传入的SQL查询包装到子查询中。但是,某些数据库不支持子查询,如果是这种情况,请使用DB Query Reader节点从数据库中读取数据。 | |
---|---|
下图显示了“数据库查询”节点的配置对话框。其他允许用户编写SQL语句的高级查询节点的配置对话框提供了类似的用户体验。有一个文本区域可以编写您自己的SQL语句,通过按Ctrl + Space可以提供语法突出显示和代码完成。在下部,有一个“*评估”*按钮,您可以在其中评估SQL语句并返回结果的前10行。如果SQL语句中有错误,则在“评估”窗口中将显示一条错误消息。左侧是“数据库元数据浏览器”窗口,通过该窗口,您可以浏览数据库元数据,例如表和视图及其对应的列。这 数据库列列表包含连接的数据库表中可用的列。双击任何一项,将其名称插入SQL语句区域中的当前光标位置。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pfhT7ZZL-1615987554266)(https://docs.knime/2020-12/db_extension_guide/img/040_dbquery2.PNG)]
图36. DB Query节点的“配置”对话框
数据库查询
“数据库查询”节点修改来自传入数据库数据连接的输入SQL查询。前任的SQL查询由占位符表示,#table#
在执行期间将被替换。然后,修改后的输入查询在输出端口可用。
数据库查询阅读器
执行输入的SQL查询,并将结果作为KNIME数据表返回。该节点不会更改或包装查询,因此支持各种返回数据的语句。
该节点支持SELECT之外的其他SQL语句,例如DESCRIBE TABLE 。 | |
---|---|
参数化的数据库查询阅读器
该节点允许您执行具有不同参数的SQL查询。它遍历输入KNIME表,并从输入表中获取值以参数化输入SQL查询。由于该节点具有KNIME数据表输入,因此它提供了一个类型映射选项卡,可用于更改映射规则。有关“类型映射”选项卡的更多信息,请参考“类型映射”部分。
数据库结构操作
数据库结构操纵是指对数据库表的任何操纵。以下工作流演示了如何使用DB Table Remover从数据库中删除现有表以及如何使用DB Table Creator节点创建新表 。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FVmhl3M1-1615987554268)(https://docs.knime/2020-12/db_extension_guide/img/050_dbstructmanip.PNG)]
图37.数据库结构操纵工作流的示例
数据库表删除器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8uiPobLi-1615987554270)(https://docs.knime/2020-12/db_extension_guide/img/050_remover.PNG)]
图38. DB Table Remover配置对话框
该节点从传入数据库连接定义的数据库中删除表。执行此节点等效于执行SQL命令 DROP
。在配置对话框中,有一个选项可以选择要删除的数据库表。该配置与“*数据库表选择器”*节点中的配置相同,您可以在其中输入相应的模式和表名,或在“数据库元数据浏览器”中选择它。
在配置窗口中可以使用以下选项:
级联:选择此选项意味着删除其他表/视图引用的表将不仅删除表本身,还删除所有相关表和视图。如果您的数据库不支持该选项,那么它将被忽略。
如果表不存在则失败:选择此选项意味着,如果所选表在数据库中不存在,则节点将失败。默认情况下,此选项未启用,因此即使数据库中不存在所选表,该节点仍将成功执行。
数据库表创建器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLCYXrjl-1615987554273)(https://docs.knime/2020-12/db_extension_guide/img/050_tablecreator.PNG)]
图39. DB Table Creator:设置
该节点创建一个新的数据库表。该表可以手动创建,也可以根据输入数据表规范动态创建。它支持高级选项,例如指定列是否可以包含空值或指定主键或唯一键以及SQL类型。
启用“使用动态设置”选项时,数据库表结构由输入KNIME数据表的结构定义。该列和键选项卡,并仅帮助阅读,以验证所创建的表的结构。可以通过更改类型映射来影响创建的数据库表结构,例如,通过定义应将KNIME双列作为字符串列写入数据库,DB Table Creator将为所有双列选择等效字符串的数据库类型。可以通过“*动态类型设置”*和“*动态密钥设置”*选项卡进一步影响此映射以及密钥生成。
在设置选项卡中,您可以输入相应的架构和表名称。提供以下选项:
创建临时表:选择此选项将创建一个临时表。临时表的处理方式(例如其存在时间,范围)等取决于您使用的数据库。有关此的更多详细信息,请咨询您的数据库供应商。
*如果表存在,则失败:如果表已经存在,*选择此选项将使节点失败,并显示特定于数据库的错误消息。默认情况下,此选项是禁用的,因此该节点将成功执行,并且如果已经存在则不创建任何表。
使用动态设置:选择此项将允许节点根据输入的KNIME表和“动态设置”选项卡动态定义数据库表的结构,例如列名和类型。仅在启用此选项后,“动态类型设置”和“动态列设置”选项卡才可用。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的映射具有更高的优先级 。如果两个选项卡中均未定义映射,则使用基于数据库连接器节点的“类型映射”定义的默认映射 。请注意,在动态设置模式下,列和键 标签变为只读,以预览动态设置的效果。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GoK4IWQ2-1615987554275)(https://docs.knime/2020-12/db_extension_guide/img/050_tablecreator2.PNG)]
图40. DB Table Creator:列
在“*列”*选项卡中,您可以手动修改输入表中的列名称与其对应的SQL类型之间的映射。您可以添加或删除列,并为特定列设置适当的SQL类型。但是,如果选择了“使用动态设置”,则此选项卡将变为只读选项,并用作动态设置的预览。
在“*键”*选项卡中,您可以手动将某些列设置为主键/唯一键。与“*列”*选项卡中一样,如果启用了“使用动态设置”,则此选项卡将变为只读状态并用作动态设置的预览。
在附加选项选项卡中,您可以编写附加的SQL语句,该语句将附加在CREATE TABLE语句之后,例如,存储参数。该语句将附加到自动生成的CREATE TABLE语句的末尾,并作为单个语句执行。
在“动态列设置”中,有两种类型的SQL类型映射:基于名称和基于KNIME。
- 在*基于名称的SQL类型映射中,*您可以基于列名称为一组列定义默认的SQL类型映射。您可以添加一个新行,其中包含应该映射的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的 映射具有更高的优先级。
- 在基于*KNIME类型的SQL类型映射中,*您可以基于KNIME数据类型定义默认的SQL类型映射。您可以添加包含应映射的KNIME数据类型的新行。
在“*动态键设置”中,*您可以基于列名动态定义键定义。您可以添加一个新行,其中包含应用于定义新键的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。
支持的通配符是*(匹配任意数量的字符)和?。(匹配一个字符),例如KNI *将匹配所有以KNI开头的字符串,例如KNIME而KNI?将仅匹配以KNI开头,后跟第四个字符的字符串。 | |
---|---|
DB操作
本节描述了用于数据库内操作的各种DB节点,例如DB Delete,DB Writer,DB Insert, DB Update,DB Merge和DB Loader 节点,以及数据库事务节点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oZcrf51Z-1615987554277)(https://docs.knime/2020-12/db_extension_guide/img/060_overview.PNG)]
图41.数据库操作示例
数据库删除
该节点从数据库中的选定表中删除行。输入是描述数据库的DB连接端口,还有一个KNIME数据表,其中包含定义从数据库中删除哪些行的值。它根据输入表中选定的列删除数据库中的数据行。因此,所有选定的列名都需要与数据库中的列名完全匹配。仅将删除数据库表中与KNIME输入数据表中所选列的值组合匹配的行。
下图显示了“ *DB删除”*节点的配置对话框。用于DB操作的其他节点的配置对话框非常相似。您可以输入表名称及其对应的架构,或在“数据库元数据浏览器”中通过单击“选择表”来选择表名称。
另外,需要选择输入表中的标识列。所选KNIME表列的名称必须与所选数据库表中的名称匹配。数据库表中所有与输入的KNIME数据表中的选定列匹配的值都将被删除的行。在SQL中,这等效于各WHERE
列。共有三个选项:
- 错误失败:如果选中该节点,则在执行过程中发生任何错误时该节点将失败,否则即使输入行之一在数据库中引起异常,该节点也将成功执行。
- 附加删除状态列:如果选中,它将在输出表中添加两个额外的列。第一列包含该
DELETE
语句影响的行数。大于或等于零的数字表示该操作已成功执行。值-2表示该操作已成功执行,但受影响的行数未知。第二列将包含警告消息(如果存在)。 - 禁用数据库数据输出端口:如果选中,它将禁用数据库数据输出端口和在节点执行结束时执行元数据查询,这可能会导致不支持子查询的数据库出现问题。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BsEN3Re4-1615987554279)(https://docs.knime/2020-12/db_extension_guide/img/060_delete.PNG)]
图42.“ *DB删除”*节点的“配置”对话框
使用“*输出类型映射”*选项卡,可以定义从KNIME类型到数据库类型的映射规则。有关此的更多信息,请参考“类型映射”部分。
数据库作家
该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。它执行的功能与“数据库插入”节点相同,但是,如果在插入值之前不存在该数据库表,它还会自动创建数据库表。新创建的表将为每个选定的输入KNIME列都有一个列。数据库列名称将与输入KNIME列的名称相同。数据库列类型是从给定的KNIME类型和类型映射配置派生的 。所有数据库列都将允许缺少值(例如NULL
)。
如果要控制创建的数据库表的属性,请使用DB Table Creator节点。
还有一个选项可以通过启用配置窗口中的删除现有表选项来覆盖现有表。启用该选项将从数据库中删除任何具有给定名称的表,然后创建一个新表。如果未选择此选项,则新数据行将追加到现有表中。一旦数据库表存在,该节点将以与“数据库插入”节点相同的方式将所有KNIME输入行写入数据库表。
数据库插入
该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。所有选定的列名都需要与数据库表中的列名完全匹配。
数据库更新
该节点使用输入的KNIME数据表的选定列中的值更新指定数据库表中的行。标识列用于WHERE
SQL语句的一部分,标识数据库表中将更新的行。要更新的列用在SET
SQL语句的一部分中,并包含将被写入所选数据库表中匹配行的值。
数据库合并
“*数据库合并”*节点是“*数据库更新”*和“*数据库插入”*节点的组合。如果数据库支持该功能,它将执行一条MERGE
语句,该语句将插入所有新行或更新所选数据库表中的所有现有行。如果数据库不支持合并功能,则节点首先尝试更新数据库表中的所有行,然后在更新过程中插入未找到匹配项的所有行。所选KNIME表列的名称需要与应在其中更新行的数据库表的名称匹配。
数据库加载器
从4.3开始,DB Loader节点采用了新的文件处理框架,该框架允许在各种文件系统之间进行无缝迁移。有关更多详细信息,请查阅《KNIME文件处理指南》。 | |
---|---|
该节点执行特定于数据库的批量加载功能,只有某些数据库(例如Hive,Impala,MySQL,PostgreSQL和H2)支持将大量数据加载到现有数据库表中。
将数据加载到表中时,大多数数据库不会执行数据检查,这可能会导致数据表损坏。该节点会执行一些初步检查,例如检查输入的KNIME数据表的列顺序和列名是否与所选数据库表兼容。但是,它不检查列类型的兼容性或值本身。请确保KNIME表的列类型和值与数据库表兼容。 | |
---|---|
根据数据库的不同,通常会使用中间文件格式(例如CSV,Parquet,ORC)来提高效率,这可能需要将文件上传到服务器。如果需要上传文件,则可以使用文件处理节点和数据库支持的任何协议,例如SSH / SCP或FTP。将数据加载到表中之后,如果数据库不再需要该已上传的文件,则该文件将被删除。如果由于某种原因不需要上传或存储文件,则文件连接会阻止执行。
某些数据库(例如MySQL和PostgreSQL)支持基于文件和基于内存的上载,这要求数据库具有不同的权限。例如,如果您无权执行基于文件的数据加载,请尝试使用基于内存的方法。
如果数据库支持各种加载方法(基于文件或基于内存),则可以在“选项”选项卡中选择该方法,如下例所示。否则,“*加载程序模式”*选项将不会出现在配置对话框中。 | |
---|---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GvQDiU40-1615987554286)(https://docs.knime/2020-12/db_extension_guide/img/060_dbloader-option.PNG)]
图43. DB Loader:选项
根据所连接的数据库,对话框设置可能会更改。例如,MySQL和PostgreSQL使用CSV文件进行数据传输。为了更改CSV文件的创建方式,请转到“*高级”*标签。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0y7hnahM-1615987554288)(https://docs.knime/2020-12/db_extension_guide/img/060_dbloader-advanced.PNG)]
图44. DB Loader:高级
数据库事务节点
数据库扩展还提供了用于模拟数据库事务的节点。事务使您可以将多个数据库数据操作操作分组为一个工作单元。这个单元要么全部执行,要么根本不执行。
数据库事务开始
“ *DB事务启动”*节点使用输入数据库连接启动事务。只要事务正在进行中,就不能在事务外部使用输入数据库连接。根据 隔离级别,在事务处理过程中,其他连接可能看不到数据库中的任何更改。事务使用已连接数据库的默认隔离级别。
数据库交易结束
的DB事务结束节点结束该输入数据库连接的事务。节点以提交结束事务,如果成功执行,则所有其他用户都可以看到所有更改。否则,节点将通过回滚来结束事务,从而使数据库返回到事务开始时的状态。
该节点有2个输入端口。第一个是事务性数据库连接端口,应从事务处理链的末端连接到该端口。第二个端口应包含来自“*数据库事务开始”*节点的输出的事务数据库连接 。如果事务成功完成并执行了提交,则来自第一个输入端口的数据库连接将被转发到输出端口,否则,如果发生回退,则将转发来自第二个输入端口的数据库连接。
下图显示了事务节点的示例。在此示例中,事务由两个DB Writer节点组成,这些节点连续将数据写入同一表。如果在写入的任何步骤中发生错误,则更改将不会执行,并且数据库将在事务开始时返回到先前的状态。如果没有错误发生,则将提交对数据库的更改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lYob0JVz-1615987554291)(https://docs.knime/2020-12/db_extension_guide/img/060_transaction.PNG)]
图45.数据库事务节点
类型映射
数据库框架允许您定义规则以从数据库类型映射 到KNIME类型,反之亦然。这是必须的,因为数据库支持不同的类型集,例如,Oracle仅具有一个精度不同的数字类型来表示整数,而且还浮点数,而KNIME使用不同的类型(整数,长整数,双精度)来表示它们。
特别是日期和时间格式在不同的数据库中受不同的支持。例如, 只有少数数据库支持在KNIME中用于表示定义的时区内的时间点的分区日期时间类型。但是,使用类型映射框架,您可以强制KNIME在将其写入数据库表之前将区域日期时间类型自动转换为字符串,并在读取该字符串时将其转换回区域日期时间值。
类型映射框架由针对从KNIME Analytics Platform视图点指定的每个方向的一组映射规则组成:
- 输出类型映射:KNIME类型到数据库类型的映射
- 输入类型映射:从数据库类型到KNIME类型的映射
每个映射方向都有两组规则:
- 按名称映射:基于列名称(或正则表达式)和类型的映射规则。仅考虑匹配两个条件的列。
- 按类型映射:基于KNIME或数据库类型的映射规则。将考虑指定数据类型的所有列。
可以在分析工作流中的各个位置定义和更改类型映射。基本配置可以在不同的连接器节点中完成。它们带有明智的数据库特定的默认映射。类型映射规则是数据库连接和数据库数据连接的一部分, 并且继承自先前的节点。除了连接器节点外,还为所有数据库节点提供KNIME数据表,还有一个Output Type Mapping选项卡,用于将输入KNIME列的节点的数据类型映射到相应数据库列的类型。
可以通过DB Type Mapper节点更改任何DB Data连接的数据库类型到KNIME类型的映射。
数据库类型映射器
通过选择给定数据库类型的KNIME类型,“ *DB Type Mapper”*节点将数据库更改为后续节点的KNIME类型映射配置。配置对话框允许您添加新的或更改现有的类型映射规则。所有新的或更改的规则均标记为粗体。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oKH9k4Tj-1615987554293)(https://docs.knime/2020-12/db_extension_guide/img/070_typemapper.PNG)]
图46. DB Type Mapper配置对话框
来自先前节点的规则不能删除,只能更改。 | |
---|---|
移民
本节说明如何将包含旧数据库节点(旧版)的工作流迁移到新数据库框架。该工作流程迁移工具可以用来指导您完成整个过程和数据库遗留节点转换为对应的新数据库节点。有关旧节点与新节点之间的映射,请查看“节点名称映射”部分中的列表。
所有先前注册的JDBC驱动程序都需要重新注册。有关如何在新数据库框架中注册驱动程序的更多信息,请参考“注册您自己的JDBC驱动程序”部分。 | |
---|---|
工作流程迁移工具
工作流迁移工具仍处于预览状态。我们将继续添加新功能并修改现有功能。 | |
---|---|
工作流迁移工具可帮助您将包含旧数据库节点的现有工作流迁移到新数据库节点。该工具不会更改任何现有工作流程,而是在原始工作流程的副本上执行迁移。
作为示例,我们可以在下图中看到一个包含数据库遗留节点的工作流。目标是使用工作流迁移工具来帮助我们将旧式节点迁移到新的数据库节点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fYL549Ol-1615987554295)(https://docs.knime/2020-12/db_extension_guide/img/080_migration_message.PNG)]
图47.包含数据库旧版节点的工作流
为了启动工作流迁移工具,我们只需要打开包含要迁移的数据库旧节点的工作流。将在工作流顶部显示一条消息,其中包含用于迁移工作流的选项(请参见上图)。
点击*迁移工作流程…将打开迁移向导窗口,如下图所示。在此窗口中,您可以更改要迁移的工作流程(包含数据库遗留节点的工作流程),并输入新工作流程的名称,该名称是旧工作流程的副本,但数据库遗留节点被新工作流程替换(如果可供使用的话)。新工作流程的默认名称是带有(迁移的)*后缀的旧工作流程的名称。
原始工作流程不会在整个迁移过程中进行修改。 | |
---|---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsIZ9V8k-1615987554298)(https://docs.knime/2020-12/db_extension_guide/img/080_wizard1.PNG)]
图48.迁移工具:选择工作流程
单击下一步转到下一页,如下所示。在此阶段,将分析工作流程,并将在此处列出存在迁移规则的所有数据库旧节点及其等效的新节点。该工具还会执行初步检查并显示任何潜在问题。如果您同意映射建议,请单击“*下一步”*执行迁移过程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WGpl1jFp-1615987554300)(https://docs.knime/2020-12/db_extension_guide/img/080_wizard2.PNG)]
图49.迁移工具:显示潜在的映射
迁移过程完成后,您可以看到如下所示的迁移报告。如果在迁移过程中发生任何警告或问题,报告中将显示相应的消息。您还可以选择以HTML格式保存并打开迁移报告。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UrxhUFU2-1615987554302)(https://docs.knime/2020-12/db_extension_guide/img/080_wizard3.PNG)]
图50.迁移工具:迁移报告
下图显示了已迁移的工作流程,其中所有数据库旧式节点都被新的数据库节点替换,同时保持所有设置不变。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3Mw6N8t-1615987554304)(https://docs.knime/2020-12/db_extension_guide/img/080_migration_result.PNG)]
图51.包含迁移的数据库节点的新工作流
禁用工作流迁移消息
如果您不想迁移并想禁用迁移消息,请单击消息中的“禁用此消息”。将打开“首选项” →“*数据库(旧版)”*页面,您可以在其中取消选中“提供迁移包含旧数据库节点的工作流”选项 ,如下图所示。单击“应用并关闭”以保存设置,如果您打开包含旧数据库节点的工作流,该消息将不再显示。要撤消此设置,只需再次打开“首选项” →“*数据库(旧版)”*页面并启用该复选框即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WrcrQimy-1615987554306)(https://docs.knime/2020-12/db_extension_guide/img/080_disable_message.PNG)]
图52.禁用迁移消息
节点名称映射
下表显示了数据库旧节点和新数据库节点之间的映射。
数据库旧版节点 | 新数据库节点 |
---|---|
– | 数据库类型映射 |
亚马逊雅典娜连接器 | 亚马逊雅典娜连接器 |
Amazon Redshift连接器 | Amazon Redshift连接器 |
数据库申请标签 | DB Apply-Binner |
数据库自动绑定 | DB自动装箱 |
数据库列过滤器 | 数据库列过滤器 |
数据库列重命名 | 数据库列重命名 |
数据库连接表读取器 | 数据库读取器 |
数据库连接表编写器 | 数据库连接表编写器 |
数据库连接器 | 数据库连接器 |
数据库删除 | 数据库删除 |
数据库删除表 | 数据库表删除器 |
数据库分组 | 数据库组 |
数据库连接器 | 数据库连接器 |
数据库循环 | 可以替换为参数化DB查询阅读器 |
数据库数字容器 | DB数位binner |
数据库枢轴 | DB枢轴 |
数据库查询 | 数据库查询 |
数据库阅读器 | 数据库查询阅读器 |
数据库行过滤器 | 数据库行过滤器 |
数据库采样 | 数据库采样 |
数据库排序器 | 数据库分类器 |
数据库SQL执行器 | DB SQL执行器 |
数据库表连接器 | 可以用数据库连接器和数据库表选择器替换 |
数据库表创建者 | 数据库表创建器 |
数据库表选择器 | 数据库表选择器 |
数据库更新 | 数据库更新 |
数据库作家 | 数据库作家 |
H2连接器 | H2连接器 |
蜂巢连接器 | 蜂巢连接器 |
蜂巢装载机 | 数据库加载器 |
Impala连接器 | Impala连接器 |
Impala加载程序 | 数据库加载器 |
Microsoft SQL Server连接器 | Microsoft SQL Server连接器 |
MySQL连接器 | MySQL连接器 |
参数化数据库查询 | 参数化的数据库查询阅读器 |
PostgreSQL连接器 | PostgreSQL连接器 |
SQL提取 | 数据库查询提取器 |
SQL注入 | 数据库查询注入器 |
SQLite连接器 | SQLite连接器 |
Vertica连接器 | Vertica连接器 |
– | Microsoft Access连接器 |
– | 数据库插入 |
– | 数据库合并 |
– | 数据库列重命名(正则表达式) |
– | 数据库分区 |
服务器设置
本节包含与执行包含KNIME Server上的数据库节点的工作流有关的所有内容。
KNIME服务器上的JDBC驱动程序
KNIME Server允许您定义 自定义配置文件, 以在其自己的执行程序以及KNIME Analytics Platform客户端上自动设置JDBC驱动程序。
除了定制概要文件之外,还可以使用首选项文件直接在执行程序上注册JDBC驱动程序 。但是,在这种情况下,服务器执行程序和所有KNIME Analytics Platform客户端的首选项需要手动保持同步,以便两端都可以使用相同的驱动程序。
服务器端步骤
-
创建一个配置文件夹内
<server-repository>/config/client-profiles
。文件夹的名称与配置文件的名称相对应。该文件夹将保存首选项和其他要分发的文件。 -
将
.jar
包含JDBC驱动程序的文件复制到配置文件文件夹中。 -
在配置文件文件夹中,创建一个
.epf
具有以下内容的首选项文件(文件名以结尾):/instance/org.knime.database/drivers/ <驱动程序ID> / database_type = <数据库> /instance/org.knime.database/drivers/ <DRIVER_ID> / driver_class = <DRIVER_CLASS_NAME> /instance/org.knime.database/drivers/<DRIVER_ID>/paths/0 = $ {profile:location} / <DRIVER_JAR> /instance/org.knime.database/drivers/ <DRIVER_ID> / url_template = <URL_TEMPLATE> /instance/org.knime.database/drivers/ <DRIVER_ID> / version = <DRIVER_VERSION>
在哪里:
-
<DRIVER_ID>
:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。 -
<DATABASE>
:数据库类型。请查阅“注册您自己的JDBC驱动程序”中显示的首选项页面,以获取当前可用类型的列表。 -
<DRIVER_CLASS_NAME>
:JDBC驱动程序类,例如oracle.jdbc.OracleDriver
对于Oracle。 -
<DRIVER_JAR>
:.jar
包含JDBC驱动程序类的文件名(包括文件扩展名)。请注意,该变量${profile:location}
代表下载定制概要文件的每个客户端上概要文件文件夹的位置。每个客户都会将其自动替换为正确的位置。 -
<URL_TEMPLATE>
:用于驱动程序的JDBC URL模板。请参阅“ JDBC URL模板”部分以获取更多信息。请注意,冒号(:
)和反斜杠(\
)必须以反斜杠转义。例子:jdbc \:oracle \:thin \:@ <主机> \:<端口> / <数据库>
-
<DRIVER_VERSION>
:JDBC驱动程序的版本,例如12.2.0
。该值可以随意选择。
-
-
通过将此信息添加到
knime.ini
文件中,需要使KNIME Server执行者知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分 以了解如何进行设置。
请注意,本节末尾有特定于数据库的示例。 | |
---|---|
客户端步骤
需要使KNIME Analytics Platform客户端知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分,以 获取有关如何进行设置的完整参考。
在KNIME Analytics Platform中,您可以转到文件→首选项→ KNIME →定制配置文件。这将打开“*定制配置文件”*页面,您可以在其中选择要使用的KNIME服务器和配置文件。更改将在重启KNIME Analytics Platform后生效。
要查看是否已添加驱动程序,请转至文件→首选项→ KNIME →数据库。在此页面中,通过定制配置文件添加的驱动程序在驱动程序ID之后标记为origin:配置文件(请参见下图)。这些驱动程序可以编辑,但不能删除。要删除配置文件驱动程序,请转到“*自定义配置文件”*页面,然后取消选择相应的配置文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlKqEdPO-1615987554307)(https://docs.knime/2020-12/db_extension_guide/img/090_profile.png)]
图53. DB Preferences页面
默认JDBC参数
默认JDBC参数为服务器管理员提供了一种方法,可以在由KNIME Server上运行的工作流建立的JDBC连接上注入JDBC参数。这些参数优先于连接器节点中指定的值。要指定其他JDBC参数,请将以下行添加到.epf
定制概要文件中:
/instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / type = <TYPE>
/instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / value = <VALUE>
在哪里:
<DRIVER_ID>
:JDBC驱动程序的唯一ID。<JDBC_PARAMETER>
:要设置的JDBC参数的名称。<TYPE>
and<VALUE>
:一个类型和值,它指定将JDBC参数设置为什么。<TYPE>
并且<VALUE>
可以被选择如下:- 设置
<TYPE>
为CONTEXT_PROPERTY
允许指定与工作流程上下文相关的属性。<VALUE>
可以设置为以下之一:context.workflow.name
:KNIME工作流程的名称。context.workflow.path
:相对于安装点的工作流路径。context.workflow.absolute-path
:绝对工作流程路径。context.workflow.user
:执行工作流程的KNIME Server用户的名称。context.workflow.temp.location
:工作流临时位置的路径。context.workflow.author.name
:工作流程作者的姓名。context.workflow.last.editor.name
:上次编辑工作流程的用户名。context.workflow.creation.date
:工作流程的创建日期。context.workflow.last.time.modified
:工作流程的最后修改时间。
- 设置
<TYPE>
为CREDENTIALS_LOGIN
允许从凭证流变量中指定登录名。设置<VALUE>
为流变量的名称。 - 设置
<TYPE>
为CREDENTIALS_PASSWORD
允许从凭证流变量中指定密码。设置<VALUE>
为流变量的名称。 - 设置
<TYPE>
为FLOW_VARIABLE
允许指定流变量。设置<VALUE>
为流变量的名称。 - 设置
<TYPE>
为LITERAL
允许指定不进行任何进一步替换的文字值。设置<VALUE>
为文字值。 - 设置
<TYPE>
为LOCAL_URL
可以指定中的URL<VALUE>
,例如“ knime” URL。
- 设置
请注意,本节末尾有特定于数据库的示例。 | |
---|---|
保留的JDBC参数
在KNIME Server上执行工作流时,例如DelegationUID
对于使用基于Simba的驱动程序的Impala / Hive连接,某些JDBC参数可能会导致安全问题 。可以将此类参数标记为*保留,*以防止工作流在KNIME Server上使用它们。要将参数设置为保留参数,请将以下行添加到.epf
自定义配置文件中:
/instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
或更短的版本:
/instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/*/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
在哪里:
<DRIVER_ID>
:JDBC驱动程序的唯一ID。<JDBC_PARAMETER>
:JDBC参数的名称。
请注意,本节末尾有特定于数据库的示例。 | |
---|---|
示例:Oracle
在此示例中,我们将在KNIME Server上注册专有的 Oracle JDBC驱动程序:
-
下载专有的 Oracle JDBC驱动程序。
-
在其中创建配置文件文件夹
<server-repository>/config/client-profiles
并命名Oracle
(例如)。 -
ojdbc8.jar
从下载的驱动程序复制到新创建的配置文件文件夹。 -
在配置文件文件夹中,创建一个名为
oracle.epf
(例如)的新文件,其内容如下:/instance/org.knime.database/drivers/Oracle/database_type=oracle /instance/org.knime.database/drivers/Oracle/driver_class=oracle.jdbc.OracleDriver /instance/org.knime.database/drivers/Oracle/paths/0=${profile:location}/ojdbc8.jar /instance/org.knime.database/drivers/Oracle/url_template=jdbc\:oracle\:thin\:// <主机> \:<端口> / <数据库> /instance/org.knime.database/drivers/Oracle/version=12.2.0
示例:Apache Hive™
与Apache Hive的连接需要进一步的设置步骤,具体取决于所使用的JDBC驱动程序。在此示例中,我们将展示如何:
- 在KNIME Server上注册Cloudera提供的专有 Hive JDBC驱动程序。
- 在KNIME Server上配置用户模拟(对于嵌入式和专有的Hive JDBC驱动程序)。
基于Simba的专有JDBC驱动程序注册
如果首选使用嵌入式开源Apache Hive JDBC驱动程序,请跳至下一部分。 | |
---|---|
-
从Cloudera网站下载专有的Hive JDBC驱动程序。
-
在其中创建配置文件文件夹
<server-repository>/config/client-profiles
并命名ClouderaHive
(例如)。 -
HiveJDBC41.jar
从下载的JDBC驱动程序复制到新创建的配置文件文件夹。 -
在配置文件文件夹中,创建一个名为
hive.epf
(例如)的新首选项文件,其中包含以下内容:/instance/org.knime.database/drivers/cloudera_hive/database_type=hive /instance/org.knime.database/drivers/cloudera_hive/driver_class=com.cloudera.hive.jdbc41.HS2Driver /instance/org.knime.database/drivers/cloudera_hive/paths/0=${profile:location}/HiveJDBC41.jar /instance/org.knime.database/drivers/cloudera_hive/url_template=jdbc\:hive2\:// <主机> \:<端口> / [数据库] /instance/org.knime.database/drivers/cloudera_hive/version=2.6.0
-
根据建议,如果KNIME Server必须模拟工作流用户,请转到下一部分。
Hive上的用户模拟
本示例将设置Hive JDBC驱动程序(嵌入式或专有),以便KNIME Server可以 在JDBC连接上模拟工作流用户。
在Hive上激活用户模拟取决于所使用的JDBC驱动程序:
- 对于嵌入式Apache Hive JDBC驱动程序,将以下行添加到KNIME Server首选项文件中。
/instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/type=CONTEXT_PROPERTY
/instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/value=context.workflow 。用户
/instance/org.knime.database/drivers/hive/attributes/reserved/*/knime.db.connection.jdbc.properties/hive.server2.proxy.user=true
- 对于专有的基于Simba的JDBC驱动程序,将以下行添加到首选项文件(使用在上一步(步骤4)中创建的首选项文件)。
/instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY
/instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user
/instance/org.knime.database/drivers/cloudera_hive/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
示例:Apache Impala™
在本示例中,我们将在KNIME Server上注册Cloudera提供的专有 Impala JDBC驱动程序。本示例设置了驱动程序,以便KNIME Server可以 在JDBC连接上模拟工作流用户。
如果您使用嵌入式开源Apache Hive JDBC驱动程序(用于Impala),则无需执行此步骤。但是,请注意,在这种情况下,由于驱动程序的限制,无法在KNIME Server上模拟用户。 | |
---|---|
-
从Cloudera网站下载专有的Impala JDBC。
-
在其中创建配置文件文件夹
<server-repository>/config/client-profiles
并命名ClouderaImpala
(例如)。 -
ImpalaJDBC41.jar
从下载的JDBC驱动程序复制到新创建的配置文件文件夹。 -
在配置文件文件夹中,创建一个名为
impala.epf
(例如)的新首选项文件,其中包含以下内容:/instance/org.knime.database/drivers/cloudera_impala/database_type=impala /instance/org.knime.database/drivers/cloudera_impala/driver_class=com.cloudera.impala.jdbc.Driver /instance/org.knime.database/drivers/cloudera_impala/paths/0=${profile:location}/ImpalaJDBC41.jar /instance/org.knime.database/drivers/cloudera_impala/url_template=jdbc\:impala\:// <主机> \ :: <端口> / [数据库] /instance/org.knime.database/drivers/cloudera_impala/version=2.6.0 /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user /instance/org.knime.database/drivers/cloudera_impala/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
请注意,最后三行使用
DelegationUID
JDBC参数来强制 用户模拟 (推荐使用)。如果您不希望KNIME Server模仿工作流用户,则可以删除最后三行。# KNIME数据库扩展指南
介绍
KNIME数据库扩展提供了一组KNIME节点,这些节点允许连接到JDBC兼容的数据库。这些节点位于“节点存储库”中的“*数据库”*类别中,您可以在其中找到许多数据库访问,操作和编写节点。
数据库节点是每个KNIME Analytics Platform安装的一部分。不需要安装任何其他的KNIME扩展。
本指南描述了KNIME数据库扩展,并除其他外,展示了如何连接到数据库以及如何在数据库内部执行数据操作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fWosZCZH-1615987556653)(C:\Users\nn\Desktop\FaceImage\010_overviewdb.png)]
图1.使用数据库节点的示例工作流程
端口类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iw8Yqv9T-1615987556654)(https://docs.knime/2020-12/db_extension_guide/img/010_port.PNG)]
图2.两种类型的数据库端口
数据库扩展中有两种类型的端口:“数据库连接”端口(红色)和“数据库数据”端口(深红色)。
的DB连接有关当前DB会话,端口存储信息,例如数据类型,连接属性,JDBC性能,驱动器信息等
该DB数据端口不仅包含DB会话,还DB数据对象,这是一个SQL查询描述。
出口视图
执行数据库节点后,您可以在输出视图中检查结果,方法是右键单击该节点,然后在菜单底部选择要检查的输出。有关如何执行节点的更多信息,请参阅《 快速入门指南》。
数据库连接输出视图
数据库连接的输出视图具有“*数据库会话”*选项卡,其中包含有关当前数据库会话的信息,例如数据库类型和连接URL。
数据库数据输出视图
当执行具有DB数据输出端口的数据库操作节点(例如DB GroupBy节点)时,该节点要做的是构建必要的SQL查询以执行用户选择的GroupBy操作并将其转发到工作流中的下一个节点。它实际上并不执行查询。但是,可以通过DB Data Outport视图检查中间结果的子集。除了有关数据库会话的信息外,数据库数据输出视图还包含输出数据的预览和说明。
出口视图中的“表预览”选项卡在开始处显示一个空表。单击缓存号。行数: 将执行中间SQL查询并缓存输出的子集,然后将其显示在输出视图中。默认情况下,仅前100行被缓存,但是您可以在顶部设置自己的值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DyjTnj7b-1615987556656)(https://docs.knime/2020-12/db_extension_guide/img/010_outport-cache.PNG)]
图3.带有检索到的行的DB Outport视图
根据SQL查询的复杂性,缓存前100行可能会花费很长时间。 | |
---|---|
可以在“*数据库规范”*选项卡中检查表规范。它包含表中的列的列表,以及它们的数据库类型和相应的KNIME数据类型(有关数据库类型和KNIME类型之间的类型映射的更多信息,请参阅“类型映射”部分。为了获取表规范,则仅在节点的配置过程中或执行期间执行仅获取元数据而不查询数据本身的查询,可以通过连接器节点的“高级”选项卡禁用在配置过程中执行元数据查询。
“*数据库查询”*选项卡包含中间SQL查询,该查询定义了此出口处的数据。该查询由在前面的数据库节点中创建的查询组成,并且仅当您想在KNIME数据表中(例如,使用DB Reader节点)检索结果时才执行查询。
会话处理
数据库会话生命周期由连接器节点管理。执行连接器节点将创建一个数据库会话,而重置该节点或关闭工作流程将破坏相应的数据库会话。
连接到数据库
节点存储库中的DB →连接子类别包含
- 一组用于特定数据库的特定于数据库的连接器节点,例如Microsoft SQL Server,MySQL,PostgreSQL,H2等。
- 以及通用的数据库连接器节点。
连接器节点通过其JDBC驱动程序创建与数据库的连接。在连接器节点的配置对话框中,您需要提供信息,例如数据库类型,数据库的位置以及身份验证方法(如果可用)。
特定于数据库的连接器节点已经包含必需的JDBC驱动程序,并提供了针对特定数据库量身定制的配置对话框。 如果可能,建议在通用DB连接器节点上使用这些节点。 | |
---|---|
连接到预定义的数据库
以下是一些具有自己专用的连接器节点的数据库:
- 亚马逊Redshift
- 亚马逊雅典娜
- Google BigQuery
- H2
- 微软Access
- Microsoft SQL服务器
- 的MySQL
- 甲骨文
- PostgreSQL的
- SQLite的
- Vertica
由于许可限制,某些专用的连接器节点(例如Oracle或Amazon Redshift)没有JDBC驱动程序。如果要使用这些节点,则需要首先注册相应的JDBC驱动程序。请参阅“注册自己的JDBC驱动程序”部分,以了解如何注册自己的驱动程序。对于Amazon Redshift,请参阅“ 第三方数据库驱动程序插件”部分。 | |
---|---|
如果您的数据库不存在专用的连接器节点,则可以使用通用的数据库连接器节点。有关此的更多信息,请参阅“连接到其他数据库”部分。
找到数据库的正确连接器节点后,双击该节点以打开配置对话框。在“*连接设置”*窗口中,您可以提供数据库的基本参数,例如数据库类型,方言,位置或身份验证。然后单击“*确定”*并执行该节点以建立连接。
KNIME Analytics Platform通常提供以下三种不同类型的连接器节点 :基于文件的连接器节点,基于服务器的连接器节点 和通用连接器节点,以下各节对此进行了说明。
基于文件的连接器节点
图4. H2连接器配置对话框 | 左侧的图显示了基于文件的数据库(例如SQLite,H2或MS Access)的节点对话框的示例。最重要的节点设置如下所述:配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您可以提供现有数据库的路径,也可以选择 在内存中创建一个临时数据库,如果该数据库支持此功能,则该数据库将保留在内存中。 |
---|---|
基于服务器的连接器节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A4D1hup2-1615987556662)(https://docs.knime/2020-12/db_extension_guide/img/020_mssqlserver.PNG)]图5. MS SQL Server连接器配置对话框 | 左侧的图显示了基于服务器的数据库(例如MySQL,Oracle或PostgreSQL)的节点对话框的示例。最重要的节点设置如下所述。配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您应该提供托管数据库的计算机的主机名和端口,以及数据库的名称,数据库名称可能是可选的,具体取决于数据库。身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》。 |
---|---|
有关“ JDBC参数和高级”选项卡的更多信息,请参考“ JDBC参数和 高级”选项卡部分。“类型映射”选项卡在“类型映射”部分中进行了说明。 | |
---|---|
第三方数据库驱动程序插件
如前所述,专用于数据库的专用连接器节点已经包含必需的JDBC驱动程序。但是,某些数据库需要特殊的许可,这使我们无法自动安装甚至将必要的JDBC驱动程序与相应的连接器节点捆绑在一起。例如,KNIME提供了其他插件来安装需要特殊许可证的 正式Microsoft SQL Server驱动程序 或Amazon Redshift驱动程序。
要安装插件,进入文件→安装KNIME扩展…。在“*安装”*窗口中,搜索所需的驱动程序(MS SQL Server或Redshift),您将看到类似于下图的内容。然后选择插件进行安装。如果在此窗口中看不到该插件,则说明该插件已安装。安装插件后,重新启动KNIME。之后,当打开专用连接器节点的配置对话框时,应该在驱动程序名称列表中看到相应数据库的已安装驱动程序可用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87PQzID5-1615987556665)(https://docs.knime/2020-12/db_extension_guide/img/02_driver_marker.PNG)]
图6.安装窗口
连接到其他数据库
通用数据库连接器节点可以连接到任何兼容JDBC的数据库。最重要的节点设置如下所述。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R6TBp19R-1615987556667)(https://docs.knime/2020-12/db_extension_guide/img/020_dbconnector.PNG)]
图7.数据库连接器配置对话框
数据库类型:选择节点将连接到的数据库的类型。例如,如果数据库是PostgreSQL派生数据库,则选择Postgres作为数据库类型。如果您不知道类型,请选择默认类型。
数据库方言:选择定义SQL语句生成方式的数据库方言。
驱动程序名称:为您的特定数据库选择适当的驱动程序。如果没有匹配的JDBC驱动程序,则首先需要对其进行注册,请参阅注册您自己的JDBC驱动程序。仅已为所选数据库类型注册的驱动程序可供选择。
数据库URL:特定于驱动程序的JDBC URL。在占位符中输入数据库信息,例如主机,端口和数据库名称。
身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》。
所选的数据库类型和方言确定支持哪些数据类型,语句(例如插入,更新和聚合功能)。 | |
---|---|
如果在连接第三方数据库时遇到错误,则可以在“高级”选项卡中启用JDBC记录器选项 。如果启用此选项,则所有JDBC操作都将写入KNIME日志中,这可能有助于您识别问题。为了调整KNIME与数据库的交互方式,例如引号标识符,您可以根据数据库的设置在“高级”选项卡下更改默认设置。例如,KNIME使用“作为默认标识符引用,某些数据库(例如Informix)默认不支持。要解决此问题,只需在Advanced Tab中更改或删除标识符定界符设置的值即可。
注册自己的JDBC驱动程序
对于某些数据库,KNIME Analytics Platform不包含现成的JDBC驱动程序。在这些情况下,必须首先在KNIME Analytics Platform中注册特定于供应商的JDBC驱动程序。请咨询您的数据库供应商以获取JDBC驱动程序。可以在下面找到一些最受欢迎的JDBC驱动程序的列表。
JDBC驱动程序必须符合 JDBC 4.1或 JDBC 4.2。 | |
---|---|
要在KNIME Server上设置JDBC驱动程序,请参阅KNIME Server上的JDBC驱动程序部分。
要注册特定于供应商的JDBC驱动程序,请转至文件→首选项→ KNIME →数据库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7fgq1mW-1615987556670)(https://docs.knime/2020-12/db_extension_guide/img/020_adddriver.PNG)]
图8. DB Preference页面
单击添加将打开一个新的数据库驱动程序窗口,您可以在其中提供JDBC驱动程序路径和所有必要的信息,例如:
-
ID:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。
-
Name:JDBC驱动程序的唯一名称。
-
数据库类型:数据库类型。如果选择特定的数据库类型(例如MySQL),则可以在专用连接器节点(例如MySQL Connector)中选择驱动程序。但是,如果数据库不在列表中,则可以选择default,这将为您提供Advanced Tab中的所有可用参数。注册为默认类型的驱动程序仅在通用DB连接器节点中可用。
-
说明:JDBC驱动程序的可选说明。
-
URL模板:专用连接器节点中使用的JDBC驱动程序连接URL格式。如果您在数据库类型中选择了默认数据库以外的其他数据库,则将使用所选数据库的默认模板来预设URL模板。请参阅下面的“ URL模板”语法信息或“ JDBC URL模板”部分以获取更多信息。
-
URL模板语法信息:单击问号将打开一个信息框,其中提供了有关URL模板语法的一般信息。此外,如果在“数据库类型”中选择默认数据库以外的数据库,则会为所选数据库类型提供一个或多个可能的URL模板示例,您可以在URL模板字段中复制和粘贴这些示例 。
-
Classpath:JDBC驱动程序的路径。如果驱动程序以单个.jar文件形式提供,则单击添加文件;如果驱动程序以包含多个.jar文件的文件夹形式提供,则 单击添加**目录。一些供应商提供.zip文件供下载,需要首先将其解压缩到文件夹中。
如果JDBC驱动程序需要本机库(例如DLL),则除了JDBC驱动程序.jar文件外,还需要将它们全部放入一个文件夹中,然后通过“*添加目录”*按钮注册该文件夹。 | |
---|---|
- 驱动程序类:单击查找驱动程序类将自动检测JDBC驱动程序类和版本。单击按钮后,请选择适当的班级。
如果您的数据库在“数据库类型”下拉列表中可用,则最好选择它而不是将其设置为default。将数据库类型设置为默认值将允许您仅使用通用DB连接器节点连接到数据库,即使该数据库有专用的连接器节点也是如此。 | |
---|---|
图9.注册新的数据库驱动程序窗口
KNIME Server可以自动将JDBC驱动程序分发给所有连接的KNIME Analytics Platform客户端(请参阅KNIME Server上的JDBC驱动程序)。 | |
---|---|
JDBC URL模板
注册JDBC驱动程序时,需要指定其JDBC URL模板,专用的Connector节点将使用该模板创建最终数据库URL。例如,jdbc:oracle:thin:@<host>:<port>/<database>
是Oracle瘦驱动程序的有效驱动程序URL模板 。对于大多数数据库,您不必自己查找合适的URL模板,因为 URL模板语法信息至少为数据库提供了一个URL模板示例。
在URL模板中的变量,例如的值<host>
,<port>
或者<database>
可以在相应的连接器节点的配置对话框中指定。
代币:
- 强制值(例如
<database>
):引用的令牌必须具有非空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。 - 可选值(例如
[database]
):引用的令牌可能具有空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。 - 条件(例如
[location=in-memory?mem:<database>]
):这适用于基于文件的数据库,例如H2或SQLite。?
如果条件为真,则第一个字符将条件与仅包含在URL中的内容分开。当前唯一可用的显式运算符是=
,以测试变量的确切值。左边的操作数必须是有效的变量名,右边的操作数是变量要包含的内容所必需的值。内容可能包括强制性令牌和/或可选令牌(<database>/[database]
),但没有条件部分。也可以测试是否存在变量。为此,请指定变量名称(例如数据库)作为条件。例如jdbc:mydb://<host>:<port>[database?/databaseName=<database>]
将导致jdbc:mydb://localhost:10000/databaseName=db1
如果在节点对话框中指定了数据库名称,则为jdbc:mydb://localhost:10000
。
对于基于服务器的数据库,应使用以下令牌:
- host:连接器节点的“*连接设置”*选项卡上“主机名”字段的值。
- port:连接器节点的“*连接设置”*选项卡上“端口”字段的值。
- database:连接器节点的“*连接设置”*选项卡上“数据库名称”字段的值。
对于基于文件的数据库,应使用以下令牌:
- location:连接器节点的“连接设置”选项卡上的“位置”选项。文件值对应于选中Path旁边的单选按钮,内存对应于In-memory旁边的单选按钮。该变量只能在条件中使用。
- file:连接器节点的“*连接设置”*选项卡上“*路径”*字段的值。仅当location的值为时,此变量才有效。
file
- database:连接器节点的“*连接设置”选项卡上的“**内存中”*字段的值。仅当location的值为时,此变量才有效。
in-memory
连接器节点的配置对话框中的字段验证取决于引用它们的(包含的)令牌是强制性的还是可选的(请参见上文)。 | |
---|---|
常见的JDBC驱动程序列表
以下是一些常用数据库驱动程序的选定列表,您可以在其中添加其他数据库驱动程序到KNIME Analytics Platform:
- 阿帕奇·德比(Apache Derby)
- Exasol
- Google BigQuery
- IBM DB2 / Informix
- 甲骨文
- SAP HANA
- 雪花
上面的列表仅显示了可以添加的数据库驱动程序的一些示例。如果您的驱动程序不在上面的列表中,仍然可以将其添加到KNIME Analytics Platform。 | |
---|---|
高级数据库选项
JDBC参数
JDBC参数允许您定义自定义JDBC驱动程序连接参数。参数的值可以是常量,变量,凭证用户,凭证密码或KNIME URL。有关支持的连接参数的更多信息,请咨询您的数据库供应商。
下图显示了具有不同变量类型的SSL JDBC参数的示例。您可以设置一个布尔值来启用或禁用SSL,也可以使用KNIME相对URL指向SSLTrustStore位置,或对trustStorePassword参数使用凭据输入。
图10. JDBC Parameters选项卡
进阶标签
通过“*高级”*选项卡中的设置,您可以定义KNIME框架属性,例如连接处理,高级SQL方言设置或查询日志记录选项。在这里,您可以调整KNIME与数据库的交互方式,例如应如何创建发送到数据库的查询。在“*元数据”*部分中,您还可以在配置节点期间禁用元数据获取,或在这样做时更改超时,如果您连接到需要更多时间来计算所创建查询的元数据的数据库,或者您已连接,则可能有必要通过慢速网络访问它。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZT7dbeQP-1615987556686)(https://docs.knime/2020-12/db_extension_guide/img/020_advanced.PNG)]
图11.高级选项卡
完整的可用选项描述如下:
- 验证查询:要执行的验证连接可用的查询。如果未指定查询,则KNIME调用Connection.isValid() 方法来验证连接。仅检查错误,不需要结果。
- CASE表达式:生成的语句中是否允许使用CASE表达式。
- CREATE TABLE CONSTRAINT名称:是否可以在CREATE TABLE语句中为CONSTRAINT定义定义名称。
- DROP TABLE语句:DROP TABLE语句是否是语言的一部分。
- 派生表引用:表引用是否可以派生表。
- 从查询插入表:是否支持通过select语句插入表,例如INSERT INTO T1(C1)(SELECT C1 FROM T2)。
- JDBC记录器:启用或禁用JDBC操作的记录器。
- JDBC语句取消:取消节点执行时启用或禁用JDBC语句取消尝试。
- 节点取消轮询间隔:两次检查节点执行是否已取消之间要等待的毫秒数。有效范围:[100,5000]。
- 在configure中检索:在数据库节点的configure方法中启用或禁用检索元数据。
- 检索配置超时:取消配置方法中的元数据检索之前要等待的时间间隔(以秒为单位)。有效范围:[1,)。
- 事务:启用或禁用数据库事务,例如提交/回滚。如果您要连接的数据库(例如Google Big Query或Dremio)不支持事务,请禁用此选项。
- CREATE“ temporary” TABLE语法:用于创建临时表的一个或多个关键字。
- CREATE TABLE“如果不存在”的语法:表创建语句条件“如果不存在”的语法。如果为空,则不会自动创建此类语句,尽管节点仍可能无法从原子上实现相同的行为。
- 提取大小:JDBC驱动程序的提示,当需要更多行时,应从数据库中获取行数。有效范围:[0,)。
- 还原数据库连接:加载已执行的连接器节点时,启用或禁用数据库连接的还原。
- 仅用空格分隔标识符:如果选中,则仅用空格分隔标识符,例如列或表名。
- 标识符定界符(关闭):标识符的闭合定界符,例如列名和表名。
- 标识符定界符(打开):标识符(例如列和表名*)的*打开定界符。
- 替换标识符中的非单词字符:是否替换标识符中的非单词字符,例如表名或列名。非单词字符包括字母数字字符(az,AZ,0-9)和下划线(_)以外的所有字符。
- 标识符非单词字符替换:启用标识符替换后,将替换标识符中的非单词字符。空值将删除非单词字符。
- 表参考关键字:表参考中相关名称之前的关键字。
- 将JDBC参数附加到URL:启用或禁用将参数附加到JDBC URL,而不是将其作为属性传递。
- 将用户名和密码附加到URL:启用或禁用将用户名和密码附加到JDBC URL,而不是将其作为属性传递。
- JDBC URL初始参数分隔符:表示JDBC URL中参数开始的字符。
- JDBC URL参数分隔符:在JDBC URL中分隔两个JDBC参数的字符。
- JDBC URL的最后一个参数后缀:在JDBC URL的最后一个参数之后附加的字符。
- 减号运算:是否支持减号设定操作。
专用的数据库连接器(例如Microsoft SQL Server连接器)通常仅显示上述选项的子集,因为大多数选项是预定义的,例如数据库是否支持CASE语句等。
例子
在本节中,我们将提供有关如何连接到一些广为人知的数据库的示例。
连接到Oracle
第一步是获取Oracle JDBC驱动程序。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DxSUEp4z-1615987556689)(https://docs.knime/2020-12/db_extension_guide/img/020_driveroracle.PNG)]
图12.注册新的Oracle驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:Oracle,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Oracle,但是您可以输入自己的驱动程序名称。
- 数据库类型:下拉列表中提供Oracle,因此数据库类型设置为oracle。
- 说明:例如,我的Oracle驱动程序。
- URL模板:通过在“数据库”类型中选择oracle,URL模板将自动预设为Oracle的默认JDBC URL模板(服务名),即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:oracle:thin:@<host>:<port>/<database>
- 类路径:单击添加文件以添加Oracle JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
- 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为版本12.2.0中的oracle.jdbc.OracleDriver。
填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Oracle数据库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wbRWeCY-1615987556695)(https://docs.knime/2020-12/db_extension_guide/img/020_driveroracle2.PNG)]
图13.数据库首选项页面
Oracle有一个专用的连接器节点,称为Oracle连接器,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库。
连接到Databricks
要连接到Databricks,您需要安装 KNIME Databricks Integration。
下一步是从官方网站下载Databricks Simba JDBC驱动程序 到您的计算机。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
KNIME为Databricks提供了Apache Hive JDBC驱动程序,您可以将其用作后备驱动程序。但是强烈建议使用上面链接中提供的官方JDBC驱动程序。 | |
---|---|
图14.注册新的Databricks驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:Databricks,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Databricks,但是您可以输入自己的驱动程序名称。
- 数据库类型:下拉列表中提供了Databricks,因此数据库类型设置为databricks。
- 说明:例如,我的Databricks驱动程序。
- URL模板:通过在“数据库”类型中选择databrick,URL模板将自动预设为Databricks的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:spark://<host>:<port>/default
- 类路径:单击添加文件以添加Databricks JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
- 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为2.6.0版本中的com.simba.spark.jdbc4.Driver。
填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3imvTUG-1615987556705)(https://docs.knime/2020-12/db_extension_guide/img/020_driverdatabricks2.PNG)]
图15.数据库首选项页面
要连接到Databricks,您需要首先创建一个连接到现有Databricks集群的Databricks环境。为此,请使用“*创建Databricks环境”*节点。在配置窗口中,您需要提供:
- Databricks URL:Databricks部署的完整URL,在AWS上为*https:// .cloud.databricks* 或在Azure上为*https:// .azuredatabricks*。
- 群集ID:Databricks工作区中群集的唯一标识符。
- 工作区ID:Azure上Databricks的工作区ID,在AWS上留空。
在“数据库端口” →“*驱动程序”*选项卡中,可以选择驱动程序名称,在本例中为我们之前注册的Databricks Simba JDBC驱动程序。
对于身份验证,Databricks强烈建议使用令牌。请参阅Databricks AWS或Azure 文档中的身份验证以获取有关个人访问令牌的更多信息。
连接到Google BigQuery
要连接到BigQuery,您需要安装 KNIME BigQuery Extension。
由于许可证限制,BigQuery JDBC驱动程序不是KNIME Analytics Platform的一部分,需要单独下载和注册。要下载BigQuery JDBC驱动程序,请访问 官方网站。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBOUJ3SR-1615987556706)(https://docs.knime/2020-12/db_extension_guide/img/020_driverbigquery.PNG)]
图16.注册新的BigQuery驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:BigQuery,但您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:BigQuery,但是您可以输入自己的驱动程序名称。
- 数据库类型:BigQuery在下拉列表中可用,因此数据库类型设置为bigquery。
- 说明:例如,我的Google BigQuery驱动程序。
- URL模板:通过在“数据库”类型中选择bigquery,URL模板将自动预设为BigQuery的默认JDBC URL模板,即。请直接参考下面的URL模板语法信息或JDBC URL模板部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:bigquery://<host>:<port>;ProjectId=<database>
- 类路径:单击添加文件以添加BigQuery JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
- 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为1.2.0版中的com.simba.googlebigquery.jdbc42.Driver。
填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7rwYyZJK-1615987556710)(https://docs.knime/2020-12/db_extension_guide/img/020_driverbigquery2.PNG)]
图17.数据库首选项页面
要连接到BigQuery服务器,建议使用Google身份验证(API密钥)节点对Google API进行身份验证并创建连接,然后使用Google BigQuery Connector节点连接到BigQuery。另外,您也可以通过“ JDBC参数”选项卡指定特定于驱动程序的身份验证信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NF6dggd9-1615987556715)(https://docs.knime/2020-12/db_extension_guide/img/020_connect_to_bigquery.PNG)]
图18.连接到BigQuery
在*Google身份验证(API密钥)*节点的配置窗口中,您需要提供:
- 服务帐户电子邮件:服务帐户的电子邮件地址。请参阅 BigQuery 文档,以获取有关如何创建服务帐户的更多信息。
- P12密钥文件位置:专用P12密钥文件的路径。创建服务帐户电子邮件时,您可以JSON或P12密钥/凭证的形式创建服务帐户密钥。请注意,此处仅支持P12键。
- 范围:将为此连接授予的范围。请参阅可用BigQuery API范围列表上的Google文档 。例如,选择Google BigQuery Connection可以查看和管理Google BigQuery中的数据。
*Google身份验证(API密钥)*节点 仅支持P12密钥! | |
---|---|
图19. Google身份验证(API密钥)节点的配置窗口
连接成功后,它可以被用来作为输入谷歌服务连接了 谷歌的BigQuery连接器节点。配置窗口包含以下内容:
- 驱动程序名称:我们在注册驱动程序时先前提供的BigQuery驱动程序的名称。在我们的示例中是BigQuery。
- 主机名:Google BigQuery服务器的主机名(或IP地址)。
- 端口:Google BigQuery服务器正在监听的端口。默认端口是443。
- 数据库名称:您要连接的数据库的名称(项目ID)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dsKH0rTA-1615987556724)(https://docs.knime/2020-12/db_extension_guide/img/020_bigquery_conf.PNG)]
图20. Google BigQuery Connector节点的配置窗口
连接到Microsoft SQL Server
默认情况下,专用的Microsoft SQL Server连接器节点与jTDS for Microsoft SQL Server驱动程序捆绑在一起。如果要使用Microsoft SQL Server的 官方驱动程序 ,则KNIME提供了一个附加插件来安装驱动程序。请参阅第三方数据库驱动程序插件以获取有关该插件及其安装方式的更多信息。
也可以使用您自己的Microsoft SQL Server驱动程序。要注册您自己的驱动程序,请参阅“注册您自己的JDBC驱动程序” 部分。但是,Microsoft SQL Server驱动程序可能需要几个本机库,例如DLL。在这种情况下,除了数据库驱动程序窗口中的JDBC文件之外,您还需要将所有必需的本机库复制到一个文件夹中,然后通过“*添加目录”*按钮注册此文件夹.jar
。如果您使用提供的Microsoft SQL Server jTDS驱动程序或通过插件安装的Microsoft SQL Server官方驱动程序,则不需要此步骤。
所有必需的文件(例如sqljdbc_auth.dll或ntlmauth.dll)都是提供的驱动程序的一部分。 | |
---|---|
安装JDBC驱动程序之后,可以使用Microsoft SQL Server连接器节点开始连接到Microsoft SQL Server。请参阅连接到预定义的数据库,以获取有关如何使用专用连接器节点进行连接的更多信息。
Microsoft SQL Server支持所谓的 Windows本机身份验证模式。如果要使用此模式,只需在配置窗口的“*身份验证”*设置中选择“ 无/本机身份**验证”。以下各节说明如何使用此模式,具体取决于您使用的驱动程序。
使用Microsoft SQL Server的官方驱动程序进行Windows本机身份验证
要将此模式与Microsoft SQL Server提供的官方驱动程序一起使用,KNIME Analytics Platform需要在Windows计算机上运行,并且您需要登录到要连接到的Microsoft SQL Server接受的Windows域中。此外,您需要在“ JDBC参数”选项卡中指定以下条目: 值为true的**IntegratedSecurity。有关更多详细信息,请参见 Microsoft文档。
使用Microsoft SQL Server的jTDS驱动程序进行Windows本机身份验证
如果您正在使用提供的用于Microsoft SQL Server的jTDS驱动程序,并且KNIME Analytics Platform在登录到要连接的Microsoft SQL Server接受的Windows域的Windows计算机上运行,那么您无需指定任何JDBC参数。
如果KNIME Analytics Platform在非Windows计算机上运行,则需要提供要用于身份验证的Windows域用户的用户名和密码。为此,请选择“*凭据”*选项或“*用户名和密码”选项。此外,还需要指定在以下条目JDBC参数标签: 域名与<< Windows域名>>*作为值。有关更多详细信息,请参见jTDS FAQ中对domain属性的描述,或参见README.sso。
连接到Apache Hive™
要连接到Hive,您需要安装 KNIME大数据连接器扩展。
默认情况下,专用的Hive连接器节点与开源Apache Hive JDBC驱动程序捆绑在一起。还支持专有驱动程序,但需要首先注册,例如Cloudera提供的Hive JDBC连接器。
在此示例中,我们要使用专有的Cloudera Hive JDBC驱动程序连接到Hive。第一步是为Cloudera Enterprise下载最新的 Hive JDBC驱动程序。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
图21.注册新的Apache Hive驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:cloudera_hive,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Cloudera Hive,但是您可以输入自己的驱动程序名称。
- 数据库类型:Hive在下拉列表中可用,因此数据库类型设置为hive。
- 说明:例如,我的Hive驱动程序。
- URL模板:请确保该字段包含
jdbc:hive2://<host>:<port>/[database]
。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。 - 类路径:单击添加文件以添加
.jar
包含Hive JDBC驱动程序的文件。驱动程序文件的路径将出现在Classpath区域中。 - 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本。请确保选择com.cloudera.hive.jdbc41.HS2Driver。
最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Hive数据库。
图22.数据库首选项页面
Hive有一个称为Hive Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库。
连接到Apache Impala™
要连接到Apache Impala,您需要安装 KNIME大数据连接器扩展。
默认情况下,专用的Impala连接器节点与开源的Apache Hive JDBC驱动程序捆绑在一起,该驱动程序与Impala兼容。还支持专有驱动程序,但需要先注册,例如Cloudera提供的Impala JDBC连接器。
在此示例中,我们想使用专有的Cloudera Impala JDBC驱动程序连接到Impala。第一步是为Cloudera Enterprise下载最新的 Impala JDBC驱动程序。然后转到文件→首选项→ KNIME →数据库,然后单击添加。
图23.注册新的Apache Impala驱动程序
在新的数据库驱动程序窗口中,提供以下信息:
- ID:cloudera_impala,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
- 名称:Cloudera Impala,但是您可以输入自己的驱动程序名称。
- 数据库类型:Impala在下拉列表中可用,因此数据库类型设置为impala。
- 说明:例如,我的Impala驱动程序。
- URL模板:通过在数据库类型中选择impala,URL模板将自动预设为Impala的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
jdbc:impala://<host>:<port>/[database]
- 类路径:单击添加文件以添加
.jar
包含Impala JDBC驱动程序文件的文件。驱动程序文件的路径将出现在Classpath区域中。 - 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本,在本例中为com.cloudera.impala.jdbc.Driver。
最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Impala数据库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BvXJuavo-1615987556736)(https://docs.knime/2020-12/db_extension_guide/img/020_driverimpala2.PNG)]
图24.“数据库首选项”页面
Impala有一个称为Impala Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库。
从数据库读取
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uT3RdOwo-1615987556738)(https://docs.knime/2020-12/db_extension_guide/img/030_reading.PNG)]
图25.从数据库读取
上图是有关如何从数据库读取数据的示例。在此示例中,我们想将存储在H2数据库中的航班数据集读取 到KNIME数据表中。
首先,您需要一个连接器节点来建立与数据库的连接,在上面的示例中,它是一个H2数据库。根据我们要连接的数据库,有几个专用的连接器节点。有关如何连接到数据库的更多详细信息,请参阅“连接到数据库”部分。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j3r7gmYm-1615987556740)(https://docs.knime/2020-12/db_extension_guide/img/030_tableselector-hidden.PNG)]图26. DB Table Selector配置对话框 | 建立连接后,下一步是使用DB Table Selector节点,该节点允许基于输入数据库连接以交互方式选择表或视图。左侧的图显示了“*数据库表选择器”*节点的配置对话框。在顶部,您可以输入架构和要选择的表/视图名称,在此示例中,我们要选择“航班”表。 |
---|---|
按下“*选择表”*按钮将打开“数据库元数据浏览器”窗口,其中列出了数据库中的可用表/视图。
此外,勾选“*自定义查询”*复选框将使您可以编写自己的自定义SQL查询来缩小结果范围。它接受任何SELECT语句,并且占位符#table#可用于引用通过“选择表格”按钮选择的表格。
该输入类型映射选项卡允许您定义的数据库类型映射规则KNIME类型。有关此的更多信息,请参考“类型映射”部分。
该节点的输出是一个DB Data连接,其中包含数据库信息,并且SQL查询由选择输入表或用户输入的自定义查询的框架自动构建。要在KNIME Analytics Platform中读取选定的表或视图,可以使用DB Reader节点。执行此节点将在数据库中执行输入的SQL查询,输出将是存储在KNIME数据表中的结果,该表将存储在运行KNIME Analytics Platform的计算机上。
数据库元数据浏览器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HT7lVkuW-1615987556742)(https://docs.knime/2020-12/db_extension_guide/img/030_metadata-cols.PNG)]图27.数据库元数据浏览器 | 数据库元数据浏览器显示数据库模式,包括所有表/视图及其对应的列和列数据类型。首先,它从数据库中获取元数据并将其缓存以备后用。通过单击一个元素(模式/表/视图),它可以显示所包含的元素。要选择表或视图,请选择名称,然后单击“确定”或双击元素。窗口顶部的搜索框使您可以搜索数据库中的任何表或视图。底部有一个刷新按钮,用于重新获取模式列表,并带有有关上一次刷新模式多长时间的时间参考。 |
---|---|
如果您刚刚创建了一个表,但是在架构列表中找不到该表,则可能是元数据浏览器缓存不是最新的,因此请尝试单击右下角的刷新按钮来刷新列表。 | |
---|---|
查询生成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frTdJ9x9-1615987556743)(https://docs.knime/2020-12/db_extension_guide/img/040_queryoverview.PNG)]图28. DB Query节点 | 成功连接到数据库后,将有一组节点提供数据库内数据操作,例如聚合,过滤,联接等。数据库节点具有可视化的用户界面,并 根据配置窗口中的用户设置在后台自动构建SQL查询,因此无需编码即可与数据库交互。每个节点的输出是一个SQL查询,该查询与该节点内执行的操作相对应。可以通过DB Data outport视图查看生成的SQL查询。 |
---|---|
可视查询生成
图29.执行数据库内数据操作的工作流示例
上图显示了数据库内数据操作的示例。在此示例中,我们从H2数据库读取 航班数据集。首先,我们对行进行过滤,以便仅采用满足特定条件的排期。然后,我们计算到达每个唯一目的地机场的平均飞行时间。最后,我们将平均值与原始值结合在一起,然后将结果读入KNIME Analytics Platform。
第一步是连接到数据库并选择我们要使用的适当表。
数据库行过滤器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZS37gy2C-1615987556750)(https://docs.knime/2020-12/db_extension_guide/img/040_rowfilter3.PNG)]
图30.“ DB行过滤器”配置对话框
选择表格后,您可以开始使用数据。首先,我们使用“ DB行过滤器”节点根据特定条件过滤行。上图显示了DB行过滤器的配置对话框。左侧有一个“预览”区域,该区域列出了要应用于输入数据的过滤器的所有条件。过滤器可以通过逻辑运算符(例如AND或OR)进行组合和分组。只有满足指定过滤条件的行才会保留在输出数据表中。底部有以下选项:
- 添加条件:在列表中添加更多条件
- 组:创建一个新的逻辑运算符(AND或OR)
- 取消分组:删除当前选择的逻辑运算符
- 删除:从列表中删除选定的条件
要创建新条件,请单击Add_Condition按钮。要编辑条件,请在条件列表中选择,它将在右侧的条件编辑器中显示所选条件。编辑器至少包含两个下拉列表。最左边的一个包含输入数据表中的列,其旁边的一个包含与所选列类型兼容的运算符,例如=,!=,<,>。根据选择的操作,将显示第三个(可能是第四个)输入字段,以输入或选择过滤器值。值字段旁边的按钮将获取所选列的所有可能值,然后可在值字段中进行选择。
单击“预览”列表中的逻辑运算符,将允许您在“与”或“或”之间进行切换,并可以通过单击“*取消分组”*来删除该运算符。
如我们的示例所示,我们希望返回满足以下条件的所有行:
- 源自芝加哥奥黑尔机场(ORD)或哈茨菲尔德-杰克逊亚特兰大机场(ATL)
- AND发生在2017年6月
- 并且在5到45分钟之间有轻微的到达延迟
数据库组
图31. DB GroupBy:手动聚合
下一步是使用DB GroupBy节点计算到达每个唯一目的地机场的平均飞行时间。要检索每个组的行数,请在“高级设置”中选中“*添加计数(*)”*复选框。可以通过结果列名称字段更改组计数列的名称。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sl0st2Bu-1615987556757)(https://docs.knime/2020-12/db_extension_guide/img/040_groupby.PNG)]
图32. DB GroupBy:组设置
要计算每个目标机场的平均飞行时间,我们需要按“*组”*选项卡中的“*目的地”*列进行 分组,然后在“*手动汇总”*选项卡中,选择“ ActualElapsedTime”列(空中时间)和AVG作为汇总方法。
数据库连接器
图33. DB Joiner:Joiner设置
为了将结果连接回原始数据,我们使用DB Joiner节点,该节点根据两个表的连接列来连接两个数据库表。在“ Joiner设置”选项卡中,有用于选择联接模式的选项,包括“内部联接”,“完全外部联接”等,以及“联接”列。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PR1Zi0bE-1615987556764)(https://docs.knime/2020-12/db_extension_guide/img/040_joiner2.PNG)]
图34. DB Joiner:列选择
在“*列选择”*选项卡中,可以从每个表中选择要包含在输出表中的列。默认情况下,底部输入的连接列不会显示在输出表中。
高级查询构建
有时,仅使用预定义的DB节点来操作数据库中的数据是不够的。本节将说明一些允许用户编写自己的SQL查询的数据库节点,例如DB Query,DB Query Reader和 Parametriczed DB Query Reader节点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOBJBrdV-1615987556766)(https://docs.knime/2020-12/db_extension_guide/img/040_advancedquery.PNG)]
图35.具有高级查询节点的示例工作流
每个将DB数据对象作为输入并返回DB数据对象作为输出的DB操作节点,将传入的SQL查询包装到子查询中。但是,某些数据库不支持子查询,如果是这种情况,请使用DB Query Reader节点从数据库中读取数据。 | |
---|---|
下图显示了“数据库查询”节点的配置对话框。其他允许用户编写SQL语句的高级查询节点的配置对话框提供了类似的用户体验。有一个文本区域可以编写您自己的SQL语句,通过按Ctrl + Space可以提供语法突出显示和代码完成。在下部,有一个“*评估”*按钮,您可以在其中评估SQL语句并返回结果的前10行。如果SQL语句中有错误,则在“评估”窗口中将显示一条错误消息。左侧是“数据库元数据浏览器”窗口,通过该窗口,您可以浏览数据库元数据,例如表和视图及其对应的列。这 数据库列列表包含连接的数据库表中可用的列。双击任何一项,将其名称插入SQL语句区域中的当前光标位置。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s8BjFF0x-1615987556768)(https://docs.knime/2020-12/db_extension_guide/img/040_dbquery2.PNG)]
图36. DB Query节点的“配置”对话框
数据库查询
“数据库查询”节点修改来自传入数据库数据连接的输入SQL查询。前任的SQL查询由占位符表示,#table#
在执行期间将被替换。然后,修改后的输入查询在输出端口可用。
数据库查询阅读器
执行输入的SQL查询,并将结果作为KNIME数据表返回。该节点不会更改或包装查询,因此支持各种返回数据的语句。
该节点支持SELECT之外的其他SQL语句,例如DESCRIBE TABLE 。 | |
---|---|
参数化的数据库查询阅读器
该节点允许您执行具有不同参数的SQL查询。它遍历输入KNIME表,并从输入表中获取值以参数化输入SQL查询。由于该节点具有KNIME数据表输入,因此它提供了一个类型映射选项卡,可用于更改映射规则。有关“类型映射”选项卡的更多信息,请参考“类型映射”部分。
数据库结构操作
数据库结构操纵是指对数据库表的任何操纵。以下工作流演示了如何使用DB Table Remover从数据库中删除现有表以及如何使用DB Table Creator节点创建新表 。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2SSpLAa-1615987556770)(https://docs.knime/2020-12/db_extension_guide/img/050_dbstructmanip.PNG)]
图37.数据库结构操纵工作流的示例
数据库表删除器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8axGD8Q6-1615987556772)(https://docs.knime/2020-12/db_extension_guide/img/050_remover.PNG)]
图38. DB Table Remover配置对话框
该节点从传入数据库连接定义的数据库中删除表。执行此节点等效于执行SQL命令 DROP
。在配置对话框中,有一个选项可以选择要删除的数据库表。该配置与“*数据库表选择器”*节点中的配置相同,您可以在其中输入相应的模式和表名,或在“数据库元数据浏览器”中选择它。
在配置窗口中可以使用以下选项:
级联:选择此选项意味着删除其他表/视图引用的表将不仅删除表本身,还删除所有相关表和视图。如果您的数据库不支持该选项,那么它将被忽略。
如果表不存在则失败:选择此选项意味着,如果所选表在数据库中不存在,则节点将失败。默认情况下,此选项未启用,因此即使数据库中不存在所选表,该节点仍将成功执行。
数据库表创建器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrwmEO8g-1615987556775)(https://docs.knime/2020-12/db_extension_guide/img/050_tablecreator.PNG)]
图39. DB Table Creator:设置
该节点创建一个新的数据库表。该表可以手动创建,也可以根据输入数据表规范动态创建。它支持高级选项,例如指定列是否可以包含空值或指定主键或唯一键以及SQL类型。
启用“使用动态设置”选项时,数据库表结构由输入KNIME数据表的结构定义。该列和键选项卡,并仅帮助阅读,以验证所创建的表的结构。可以通过更改类型映射来影响创建的数据库表结构,例如,通过定义应将KNIME双列作为字符串列写入数据库,DB Table Creator将为所有双列选择等效字符串的数据库类型。可以通过“*动态类型设置”*和“*动态密钥设置”*选项卡进一步影响此映射以及密钥生成。
在设置选项卡中,您可以输入相应的架构和表名称。提供以下选项:
创建临时表:选择此选项将创建一个临时表。临时表的处理方式(例如其存在时间,范围)等取决于您使用的数据库。有关此的更多详细信息,请咨询您的数据库供应商。
*如果表存在,则失败:如果表已经存在,*选择此选项将使节点失败,并显示特定于数据库的错误消息。默认情况下,此选项是禁用的,因此该节点将成功执行,并且如果已经存在则不创建任何表。
使用动态设置:选择此项将允许节点根据输入的KNIME表和“动态设置”选项卡动态定义数据库表的结构,例如列名和类型。仅在启用此选项后,“动态类型设置”和“动态列设置”选项卡才可用。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的映射具有更高的优先级 。如果两个选项卡中均未定义映射,则使用基于数据库连接器节点的“类型映射”定义的默认映射 。请注意,在动态设置模式下,列和键 标签变为只读,以预览动态设置的效果。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I5YwLuaD-1615987556777)(https://docs.knime/2020-12/db_extension_guide/img/050_tablecreator2.PNG)]
图40. DB Table Creator:列
在“*列”*选项卡中,您可以手动修改输入表中的列名称与其对应的SQL类型之间的映射。您可以添加或删除列,并为特定列设置适当的SQL类型。但是,如果选择了“使用动态设置”,则此选项卡将变为只读选项,并用作动态设置的预览。
在“*键”*选项卡中,您可以手动将某些列设置为主键/唯一键。与“*列”*选项卡中一样,如果启用了“使用动态设置”,则此选项卡将变为只读状态并用作动态设置的预览。
在附加选项选项卡中,您可以编写附加的SQL语句,该语句将附加在CREATE TABLE语句之后,例如,存储参数。该语句将附加到自动生成的CREATE TABLE语句的末尾,并作为单个语句执行。
在“动态列设置”中,有两种类型的SQL类型映射:基于名称和基于KNIME。
- 在*基于名称的SQL类型映射中,*您可以基于列名称为一组列定义默认的SQL类型映射。您可以添加一个新行,其中包含应该映射的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的 映射具有更高的优先级。
- 在基于*KNIME类型的SQL类型映射中,*您可以基于KNIME数据类型定义默认的SQL类型映射。您可以添加包含应映射的KNIME数据类型的新行。
在“*动态键设置”中,*您可以基于列名动态定义键定义。您可以添加一个新行,其中包含应用于定义新键的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。
支持的通配符是*(匹配任意数量的字符)和?。(匹配一个字符),例如KNI *将匹配所有以KNI开头的字符串,例如KNIME而KNI?将仅匹配以KNI开头,后跟第四个字符的字符串。 | |
---|---|
DB操作
本节描述了用于数据库内操作的各种DB节点,例如DB Delete,DB Writer,DB Insert, DB Update,DB Merge和DB Loader 节点,以及数据库事务节点。
图41.数据库操作示例
数据库删除
该节点从数据库中的选定表中删除行。输入是描述数据库的DB连接端口,还有一个KNIME数据表,其中包含定义从数据库中删除哪些行的值。它根据输入表中选定的列删除数据库中的数据行。因此,所有选定的列名都需要与数据库中的列名完全匹配。仅将删除数据库表中与KNIME输入数据表中所选列的值组合匹配的行。
下图显示了“ *DB删除”*节点的配置对话框。用于DB操作的其他节点的配置对话框非常相似。您可以输入表名称及其对应的架构,或在“数据库元数据浏览器”中通过单击“选择表”来选择表名称。
另外,需要选择输入表中的标识列。所选KNIME表列的名称必须与所选数据库表中的名称匹配。数据库表中所有与输入的KNIME数据表中的选定列匹配的值都将被删除的行。在SQL中,这等效于各WHERE
列。共有三个选项:
- 错误失败:如果选中该节点,则在执行过程中发生任何错误时该节点将失败,否则即使输入行之一在数据库中引起异常,该节点也将成功执行。
- 附加删除状态列:如果选中,它将在输出表中添加两个额外的列。第一列包含该
DELETE
语句影响的行数。大于或等于零的数字表示该操作已成功执行。值-2表示该操作已成功执行,但受影响的行数未知。第二列将包含警告消息(如果存在)。 - 禁用数据库数据输出端口:如果选中,它将禁用数据库数据输出端口和在节点执行结束时执行元数据查询,这可能会导致不支持子查询的数据库出现问题。
图42.“ *DB删除”*节点的“配置”对话框
使用“*输出类型映射”*选项卡,可以定义从KNIME类型到数据库类型的映射规则。有关此的更多信息,请参考“类型映射”部分。
数据库作家
该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。它执行的功能与“数据库插入”节点相同,但是,如果在插入值之前不存在该数据库表,它还会自动创建数据库表。新创建的表将为每个选定的输入KNIME列都有一个列。数据库列名称将与输入KNIME列的名称相同。数据库列类型是从给定的KNIME类型和类型映射配置派生的 。所有数据库列都将允许缺少值(例如NULL
)。
如果要控制创建的数据库表的属性,请使用DB Table Creator节点。
还有一个选项可以通过启用配置窗口中的删除现有表选项来覆盖现有表。启用该选项将从数据库中删除任何具有给定名称的表,然后创建一个新表。如果未选择此选项,则新数据行将追加到现有表中。一旦数据库表存在,该节点将以与“数据库插入”节点相同的方式将所有KNIME输入行写入数据库表。
数据库插入
该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。所有选定的列名都需要与数据库表中的列名完全匹配。
数据库更新
该节点使用输入的KNIME数据表的选定列中的值更新指定数据库表中的行。标识列用于WHERE
SQL语句的一部分,标识数据库表中将更新的行。要更新的列用在SET
SQL语句的一部分中,并包含将被写入所选数据库表中匹配行的值。
数据库合并
“*数据库合并”*节点是“*数据库更新”*和“*数据库插入”*节点的组合。如果数据库支持该功能,它将执行一条MERGE
语句,该语句将插入所有新行或更新所选数据库表中的所有现有行。如果数据库不支持合并功能,则节点首先尝试更新数据库表中的所有行,然后在更新过程中插入未找到匹配项的所有行。所选KNIME表列的名称需要与应在其中更新行的数据库表的名称匹配。
数据库加载器
从4.3开始,DB Loader节点采用了新的文件处理框架,该框架允许在各种文件系统之间进行无缝迁移。有关更多详细信息,请查阅《KNIME文件处理指南》。 | |
---|---|
该节点执行特定于数据库的批量加载功能,只有某些数据库(例如Hive,Impala,MySQL,PostgreSQL和H2)支持将大量数据加载到现有数据库表中。
将数据加载到表中时,大多数数据库不会执行数据检查,这可能会导致数据表损坏。该节点会执行一些初步检查,例如检查输入的KNIME数据表的列顺序和列名是否与所选数据库表兼容。但是,它不检查列类型的兼容性或值本身。请确保KNIME表的列类型和值与数据库表兼容。 | |
---|---|
根据数据库的不同,通常会使用中间文件格式(例如CSV,Parquet,ORC)来提高效率,这可能需要将文件上传到服务器。如果需要上传文件,则可以使用文件处理节点和数据库支持的任何协议,例如SSH / SCP或FTP。将数据加载到表中之后,如果数据库不再需要该已上传的文件,则该文件将被删除。如果由于某种原因不需要上传或存储文件,则文件连接会阻止执行。
某些数据库(例如MySQL和PostgreSQL)支持基于文件和基于内存的上载,这要求数据库具有不同的权限。例如,如果您无权执行基于文件的数据加载,请尝试使用基于内存的方法。
如果数据库支持各种加载方法(基于文件或基于内存),则可以在“选项”选项卡中选择该方法,如下例所示。否则,“*加载程序模式”*选项将不会出现在配置对话框中。 | |
---|---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxRqms8L-1615987556783)(https://docs.knime/2020-12/db_extension_guide/img/060_dbloader-option.PNG)]
图43. DB Loader:选项
根据所连接的数据库,对话框设置可能会更改。例如,MySQL和PostgreSQL使用CSV文件进行数据传输。为了更改CSV文件的创建方式,请转到“*高级”*标签。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y3Qew1fX-1615987556785)(https://docs.knime/2020-12/db_extension_guide/img/060_dbloader-advanced.PNG)]
图44. DB Loader:高级
数据库事务节点
数据库扩展还提供了用于模拟数据库事务的节点。事务使您可以将多个数据库数据操作操作分组为一个工作单元。这个单元要么全部执行,要么根本不执行。
数据库事务开始
“ *DB事务启动”*节点使用输入数据库连接启动事务。只要事务正在进行中,就不能在事务外部使用输入数据库连接。根据 隔离级别,在事务处理过程中,其他连接可能看不到数据库中的任何更改。事务使用已连接数据库的默认隔离级别。
数据库交易结束
的DB事务结束节点结束该输入数据库连接的事务。节点以提交结束事务,如果成功执行,则所有其他用户都可以看到所有更改。否则,节点将通过回滚来结束事务,从而使数据库返回到事务开始时的状态。
该节点有2个输入端口。第一个是事务性数据库连接端口,应从事务处理链的末端连接到该端口。第二个端口应包含来自“*数据库事务开始”*节点的输出的事务数据库连接 。如果事务成功完成并执行了提交,则来自第一个输入端口的数据库连接将被转发到输出端口,否则,如果发生回退,则将转发来自第二个输入端口的数据库连接。
下图显示了事务节点的示例。在此示例中,事务由两个DB Writer节点组成,这些节点连续将数据写入同一表。如果在写入的任何步骤中发生错误,则更改将不会执行,并且数据库将在事务开始时返回到先前的状态。如果没有错误发生,则将提交对数据库的更改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-doUarfwx-1615987556787)(https://docs.knime/2020-12/db_extension_guide/img/060_transaction.PNG)]
图45.数据库事务节点
类型映射
数据库框架允许您定义规则以从数据库类型映射 到KNIME类型,反之亦然。这是必须的,因为数据库支持不同的类型集,例如,Oracle仅具有一个精度不同的数字类型来表示整数,而且还浮点数,而KNIME使用不同的类型(整数,长整数,双精度)来表示它们。
特别是日期和时间格式在不同的数据库中受不同的支持。例如, 只有少数数据库支持在KNIME中用于表示定义的时区内的时间点的分区日期时间类型。但是,使用类型映射框架,您可以强制KNIME在将其写入数据库表之前将区域日期时间类型自动转换为字符串,并在读取该字符串时将其转换回区域日期时间值。
类型映射框架由针对从KNIME Analytics Platform视图点指定的每个方向的一组映射规则组成:
- 输出类型映射:KNIME类型到数据库类型的映射
- 输入类型映射:从数据库类型到KNIME类型的映射
每个映射方向都有两组规则:
- 按名称映射:基于列名称(或正则表达式)和类型的映射规则。仅考虑匹配两个条件的列。
- 按类型映射:基于KNIME或数据库类型的映射规则。将考虑指定数据类型的所有列。
可以在分析工作流中的各个位置定义和更改类型映射。基本配置可以在不同的连接器节点中完成。它们带有明智的数据库特定的默认映射。类型映射规则是数据库连接和数据库数据连接的一部分, 并且继承自先前的节点。除了连接器节点外,还为所有数据库节点提供KNIME数据表,还有一个Output Type Mapping选项卡,用于将输入KNIME列的节点的数据类型映射到相应数据库列的类型。
可以通过DB Type Mapper节点更改任何DB Data连接的数据库类型到KNIME类型的映射。
数据库类型映射器
通过选择给定数据库类型的KNIME类型,“ *DB Type Mapper”*节点将数据库更改为后续节点的KNIME类型映射配置。配置对话框允许您添加新的或更改现有的类型映射规则。所有新的或更改的规则均标记为粗体。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9915H1p-1615987556789)(https://docs.knime/2020-12/db_extension_guide/img/070_typemapper.PNG)]
图46. DB Type Mapper配置对话框
来自先前节点的规则不能删除,只能更改。 | |
---|---|
移民
本节说明如何将包含旧数据库节点(旧版)的工作流迁移到新数据库框架。该工作流程迁移工具可以用来指导您完成整个过程和数据库遗留节点转换为对应的新数据库节点。有关旧节点与新节点之间的映射,请查看“节点名称映射”部分中的列表。
所有先前注册的JDBC驱动程序都需要重新注册。有关如何在新数据库框架中注册驱动程序的更多信息,请参考“注册您自己的JDBC驱动程序”部分。 | |
---|---|
工作流程迁移工具
工作流迁移工具仍处于预览状态。我们将继续添加新功能并修改现有功能。 | |
---|---|
工作流迁移工具可帮助您将包含旧数据库节点的现有工作流迁移到新数据库节点。该工具不会更改任何现有工作流程,而是在原始工作流程的副本上执行迁移。
作为示例,我们可以在下图中看到一个包含数据库遗留节点的工作流。目标是使用工作流迁移工具来帮助我们将旧式节点迁移到新的数据库节点。
图47.包含数据库旧版节点的工作流
为了启动工作流迁移工具,我们只需要打开包含要迁移的数据库旧节点的工作流。将在工作流顶部显示一条消息,其中包含用于迁移工作流的选项(请参见上图)。
点击*迁移工作流程…将打开迁移向导窗口,如下图所示。在此窗口中,您可以更改要迁移的工作流程(包含数据库遗留节点的工作流程),并输入新工作流程的名称,该名称是旧工作流程的副本,但数据库遗留节点被新工作流程替换(如果可供使用的话)。新工作流程的默认名称是带有(迁移的)*后缀的旧工作流程的名称。
原始工作流程不会在整个迁移过程中进行修改。 | |
---|---|
图48.迁移工具:选择工作流程
单击下一步转到下一页,如下所示。在此阶段,将分析工作流程,并将在此处列出存在迁移规则的所有数据库旧节点及其等效的新节点。该工具还会执行初步检查并显示任何潜在问题。如果您同意映射建议,请单击“*下一步”*执行迁移过程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sVGotc4-1615987556797)(https://docs.knime/2020-12/db_extension_guide/img/080_wizard2.PNG)]
图49.迁移工具:显示潜在的映射
迁移过程完成后,您可以看到如下所示的迁移报告。如果在迁移过程中发生任何警告或问题,报告中将显示相应的消息。您还可以选择以HTML格式保存并打开迁移报告。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RZfJZ9av-1615987556799)(https://docs.knime/2020-12/db_extension_guide/img/080_wizard3.PNG)]
图50.迁移工具:迁移报告
下图显示了已迁移的工作流程,其中所有数据库旧式节点都被新的数据库节点替换,同时保持所有设置不变。
图51.包含迁移的数据库节点的新工作流
禁用工作流迁移消息
如果您不想迁移并想禁用迁移消息,请单击消息中的“禁用此消息”。将打开“首选项” →“*数据库(旧版)”*页面,您可以在其中取消选中“提供迁移包含旧数据库节点的工作流”选项 ,如下图所示。单击“应用并关闭”以保存设置,如果您打开包含旧数据库节点的工作流,该消息将不再显示。要撤消此设置,只需再次打开“首选项” →“*数据库(旧版)”*页面并启用该复选框即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52l8sj0T-1615987556804)(https://docs.knime/2020-12/db_extension_guide/img/080_disable_message.PNG)]
图52.禁用迁移消息
节点名称映射
下表显示了数据库旧节点和新数据库节点之间的映射。
数据库旧版节点 | 新数据库节点 |
---|---|
– | 数据库类型映射 |
亚马逊雅典娜连接器 | 亚马逊雅典娜连接器 |
Amazon Redshift连接器 | Amazon Redshift连接器 |
数据库申请标签 | DB Apply-Binner |
数据库自动绑定 | DB自动装箱 |
数据库列过滤器 | 数据库列过滤器 |
数据库列重命名 | 数据库列重命名 |
数据库连接表读取器 | 数据库读取器 |
数据库连接表编写器 | 数据库连接表编写器 |
数据库连接器 | 数据库连接器 |
数据库删除 | 数据库删除 |
数据库删除表 | 数据库表删除器 |
数据库分组 | 数据库组 |
数据库连接器 | 数据库连接器 |
数据库循环 | 可以替换为参数化DB查询阅读器 |
数据库数字容器 | DB数位binner |
数据库枢轴 | DB枢轴 |
数据库查询 | 数据库查询 |
数据库阅读器 | 数据库查询阅读器 |
数据库行过滤器 | 数据库行过滤器 |
数据库采样 | 数据库采样 |
数据库排序器 | 数据库分类器 |
数据库SQL执行器 | DB SQL执行器 |
数据库表连接器 | 可以用数据库连接器和数据库表选择器替换 |
数据库表创建者 | 数据库表创建器 |
数据库表选择器 | 数据库表选择器 |
数据库更新 | 数据库更新 |
数据库作家 | 数据库作家 |
H2连接器 | H2连接器 |
蜂巢连接器 | 蜂巢连接器 |
蜂巢装载机 | 数据库加载器 |
Impala连接器 | Impala连接器 |
Impala加载程序 | 数据库加载器 |
Microsoft SQL Server连接器 | Microsoft SQL Server连接器 |
MySQL连接器 | MySQL连接器 |
参数化数据库查询 | 参数化的数据库查询阅读器 |
PostgreSQL连接器 | PostgreSQL连接器 |
SQL提取 | 数据库查询提取器 |
SQL注入 | 数据库查询注入器 |
SQLite连接器 | SQLite连接器 |
Vertica连接器 | Vertica连接器 |
– | Microsoft Access连接器 |
– | 数据库插入 |
– | 数据库合并 |
– | 数据库列重命名(正则表达式) |
– | 数据库分区 |
服务器设置
本节包含与执行包含KNIME Server上的数据库节点的工作流有关的所有内容。
KNIME服务器上的JDBC驱动程序
KNIME Server允许您定义 自定义配置文件, 以在其自己的执行程序以及KNIME Analytics Platform客户端上自动设置JDBC驱动程序。
除了定制概要文件之外,还可以使用首选项文件直接在执行程序上注册JDBC驱动程序 。但是,在这种情况下,服务器执行程序和所有KNIME Analytics Platform客户端的首选项需要手动保持同步,以便两端都可以使用相同的驱动程序。
服务器端步骤
-
创建一个配置文件夹内
<server-repository>/config/client-profiles
。文件夹的名称与配置文件的名称相对应。该文件夹将保存首选项和其他要分发的文件。 -
将
.jar
包含JDBC驱动程序的文件复制到配置文件文件夹中。 -
在配置文件文件夹中,创建一个
.epf
具有以下内容的首选项文件(文件名以结尾):/instance/org.knime.database/drivers/ <驱动程序ID> / database_type = <数据库> /instance/org.knime.database/drivers/ <DRIVER_ID> / driver_class = <DRIVER_CLASS_NAME> /instance/org.knime.database/drivers/<DRIVER_ID>/paths/0 = $ {profile:location} / <DRIVER_JAR> /instance/org.knime.database/drivers/ <DRIVER_ID> / url_template = <URL_TEMPLATE> /instance/org.knime.database/drivers/ <DRIVER_ID> / version = <DRIVER_VERSION>
在哪里:
-
<DRIVER_ID>
:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。 -
<DATABASE>
:数据库类型。请查阅“注册您自己的JDBC驱动程序”中显示的首选项页面,以获取当前可用类型的列表。 -
<DRIVER_CLASS_NAME>
:JDBC驱动程序类,例如oracle.jdbc.OracleDriver
对于Oracle。 -
<DRIVER_JAR>
:.jar
包含JDBC驱动程序类的文件名(包括文件扩展名)。请注意,该变量${profile:location}
代表下载定制概要文件的每个客户端上概要文件文件夹的位置。每个客户都会将其自动替换为正确的位置。 -
<URL_TEMPLATE>
:用于驱动程序的JDBC URL模板。请参阅“ JDBC URL模板”部分以获取更多信息。请注意,冒号(:
)和反斜杠(\
)必须以反斜杠转义。例子:jdbc \:oracle \:thin \:@ <主机> \:<端口> / <数据库>
-
<DRIVER_VERSION>
:JDBC驱动程序的版本,例如12.2.0
。该值可以随意选择。
-
-
通过将此信息添加到
knime.ini
文件中,需要使KNIME Server执行者知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分 以了解如何进行设置。
请注意,本节末尾有特定于数据库的示例。 | |
---|---|
客户端步骤
需要使KNIME Analytics Platform客户端知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分,以 获取有关如何进行设置的完整参考。
在KNIME Analytics Platform中,您可以转到文件→首选项→ KNIME →定制配置文件。这将打开“*定制配置文件”*页面,您可以在其中选择要使用的KNIME服务器和配置文件。更改将在重启KNIME Analytics Platform后生效。
要查看是否已添加驱动程序,请转至文件→首选项→ KNIME →数据库。在此页面中,通过定制配置文件添加的驱动程序在驱动程序ID之后标记为origin:配置文件(请参见下图)。这些驱动程序可以编辑,但不能删除。要删除配置文件驱动程序,请转到“*自定义配置文件”*页面,然后取消选择相应的配置文件。
图53. DB Preferences页面
默认JDBC参数
默认JDBC参数为服务器管理员提供了一种方法,可以在由KNIME Server上运行的工作流建立的JDBC连接上注入JDBC参数。这些参数优先于连接器节点中指定的值。要指定其他JDBC参数,请将以下行添加到.epf
定制概要文件中:
/instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / type = <TYPE>
/instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / value = <VALUE>
在哪里:
<DRIVER_ID>
:JDBC驱动程序的唯一ID。<JDBC_PARAMETER>
:要设置的JDBC参数的名称。<TYPE>
and<VALUE>
:一个类型和值,它指定将JDBC参数设置为什么。<TYPE>
并且<VALUE>
可以被选择如下:- 设置
<TYPE>
为CONTEXT_PROPERTY
允许指定与工作流程上下文相关的属性。<VALUE>
可以设置为以下之一:context.workflow.name
:KNIME工作流程的名称。context.workflow.path
:相对于安装点的工作流路径。context.workflow.absolute-path
:绝对工作流程路径。context.workflow.user
:执行工作流程的KNIME Server用户的名称。context.workflow.temp.location
:工作流临时位置的路径。context.workflow.author.name
:工作流程作者的姓名。context.workflow.last.editor.name
:上次编辑工作流程的用户名。context.workflow.creation.date
:工作流程的创建日期。context.workflow.last.time.modified
:工作流程的最后修改时间。
- 设置
<TYPE>
为CREDENTIALS_LOGIN
允许从凭证流变量中指定登录名。设置<VALUE>
为流变量的名称。 - 设置
<TYPE>
为CREDENTIALS_PASSWORD
允许从凭证流变量中指定密码。设置<VALUE>
为流变量的名称。 - 设置
<TYPE>
为FLOW_VARIABLE
允许指定流变量。设置<VALUE>
为流变量的名称。 - 设置
<TYPE>
为LITERAL
允许指定不进行任何进一步替换的文字值。设置<VALUE>
为文字值。 - 设置
<TYPE>
为LOCAL_URL
可以指定中的URL<VALUE>
,例如“ knime” URL。
- 设置
请注意,本节末尾有特定于数据库的示例。 | |
---|---|
保留的JDBC参数
在KNIME Server上执行工作流时,例如DelegationUID
对于使用基于Simba的驱动程序的Impala / Hive连接,某些JDBC参数可能会导致安全问题 。可以将此类参数标记为*保留,*以防止工作流在KNIME Server上使用它们。要将参数设置为保留参数,请将以下行添加到.epf
自定义配置文件中:
/instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
或更短的版本:
/instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/*/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
在哪里:
<DRIVER_ID>
:JDBC驱动程序的唯一ID。<JDBC_PARAMETER>
:JDBC参数的名称。
请注意,本节末尾有特定于数据库的示例。 | |
---|---|
示例:Oracle
在此示例中,我们将在KNIME Server上注册专有的 Oracle JDBC驱动程序:
-
下载专有的 Oracle JDBC驱动程序。
-
在其中创建配置文件文件夹
<server-repository>/config/client-profiles
并命名Oracle
(例如)。 -
ojdbc8.jar
从下载的驱动程序复制到新创建的配置文件文件夹。 -
在配置文件文件夹中,创建一个名为
oracle.epf
(例如)的新文件,其内容如下:/instance/org.knime.database/drivers/Oracle/database_type=oracle /instance/org.knime.database/drivers/Oracle/driver_class=oracle.jdbc.OracleDriver /instance/org.knime.database/drivers/Oracle/paths/0=${profile:location}/ojdbc8.jar /instance/org.knime.database/drivers/Oracle/url_template=jdbc\:oracle\:thin\:// <主机> \:<端口> / <数据库> /instance/org.knime.database/drivers/Oracle/version=12.2.0
示例:Apache Hive™
与Apache Hive的连接需要进一步的设置步骤,具体取决于所使用的JDBC驱动程序。在此示例中,我们将展示如何:
- 在KNIME Server上注册Cloudera提供的专有 Hive JDBC驱动程序。
- 在KNIME Server上配置用户模拟(对于嵌入式和专有的Hive JDBC驱动程序)。
基于Simba的专有JDBC驱动程序注册
如果首选使用嵌入式开源Apache Hive JDBC驱动程序,请跳至下一部分。 | |
---|---|
-
从Cloudera网站下载专有的Hive JDBC驱动程序。
-
在其中创建配置文件文件夹
<server-repository>/config/client-profiles
并命名ClouderaHive
(例如)。 -
HiveJDBC41.jar
从下载的JDBC驱动程序复制到新创建的配置文件文件夹。 -
在配置文件文件夹中,创建一个名为
hive.epf
(例如)的新首选项文件,其中包含以下内容:/instance/org.knime.database/drivers/cloudera_hive/database_type=hive /instance/org.knime.database/drivers/cloudera_hive/driver_class=com.cloudera.hive.jdbc41.HS2Driver /instance/org.knime.database/drivers/cloudera_hive/paths/0=${profile:location}/HiveJDBC41.jar /instance/org.knime.database/drivers/cloudera_hive/url_template=jdbc\:hive2\:// <主机> \:<端口> / [数据库] /instance/org.knime.database/drivers/cloudera_hive/version=2.6.0
-
根据建议,如果KNIME Server必须模拟工作流用户,请转到下一部分。
Hive上的用户模拟
本示例将设置Hive JDBC驱动程序(嵌入式或专有),以便KNIME Server可以 在JDBC连接上模拟工作流用户。
在Hive上激活用户模拟取决于所使用的JDBC驱动程序:
- 对于嵌入式Apache Hive JDBC驱动程序,将以下行添加到KNIME Server首选项文件中。
/instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/type=CONTEXT_PROPERTY
/instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/value=context.workflow 。用户
/instance/org.knime.database/drivers/hive/attributes/reserved/*/knime.db.connection.jdbc.properties/hive.server2.proxy.user=true
- 对于专有的基于Simba的JDBC驱动程序,将以下行添加到首选项文件(使用在上一步(步骤4)中创建的首选项文件)。
/instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY
/instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user
/instance/org.knime.database/drivers/cloudera_hive/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
示例:Apache Impala™
在本示例中,我们将在KNIME Server上注册Cloudera提供的专有 Impala JDBC驱动程序。本示例设置了驱动程序,以便KNIME Server可以 在JDBC连接上模拟工作流用户。
如果您使用嵌入式开源Apache Hive JDBC驱动程序(用于Impala),则无需执行此步骤。但是,请注意,在这种情况下,由于驱动程序的限制,无法在KNIME Server上模拟用户。 | |
---|---|
-
从Cloudera网站下载专有的Impala JDBC。
-
在其中创建配置文件文件夹
<server-repository>/config/client-profiles
并命名ClouderaImpala
(例如)。 -
ImpalaJDBC41.jar
从下载的JDBC驱动程序复制到新创建的配置文件文件夹。 -
在配置文件文件夹中,创建一个名为
impala.epf
(例如)的新首选项文件,其中包含以下内容:/instance/org.knime.database/drivers/cloudera_impala/database_type=impala /instance/org.knime.database/drivers/cloudera_impala/driver_class=com.cloudera.impala.jdbc.Driver /instance/org.knime.database/drivers/cloudera_impala/paths/0=${profile:location}/ImpalaJDBC41.jar /instance/org.knime.database/drivers/cloudera_impala/url_template=jdbc\:impala\:// <主机> \ :: <端口> / [数据库] /instance/org.knime.database/drivers/cloudera_impala/version=2.6.0 /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user /instance/org.knime.database/drivers/cloudera_impala/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
请注意,最后三行使用
DelegationUID
JDBC参数来强制 用户模拟 (推荐使用)。如果您不希望KNIME Server模仿工作流用户,则可以删除最后三行。
更多推荐
KNIME数据库扩展指南
发布评论