SQLExecutor
对数据库执行SQL查询。对于进入转换器的每个初始特性,都会向数据库发出一个查询。初始特性和查询结果都可以作为特性输出。
典型的用途
- 根据SQL语句将数据库记录提取为FME功能
- 执行数据库加入
- 执行SQL数据库表操作(创建、删除、修改、截断)
- 在数据加载之前或之后创建或删除索引或约束
它是如何工作的?
SQLExecutor通过Initiator端口接收功能,并且对于收到的每个功能,它针对外部数据库执行SQL查询。输出查询结果以及启动功能。
SQL语句在变压器中构造,使用适用于数据库中的适当语法。如果数据库支持空间谓词,则支持SPATIAL查询。
在此示例中,我们有一个消防大厅的数据集,其中包括点几何和一些属性。他们有一个街道地址,但不是完整的邮政地址。
我们将使用SQLExecutor连接数据库表(使用Address字段作为键),并检索完整的邮政地址。
此外,我们将从数据库表执行第二个连接到数据库表,并检索每个大厅的型域名。
Firehalls数据集在SQLExecutor上连接到Initiator端口。每个Firehalls功能将导致该功能执行SQL查询。
第一步是连接到外部数据库。选择类型,在本例中是PostGIS。然后配置(或选择,如果预先保存)数据库连接。
接下来,我们创建一个SQL语句以加入两个表。笔记:
- @ value(地址)正在提供一个值发起人功能 - 特定功能的地址,它将结果限制为仅匹配该功能的记录。由于在每次功能通过时运行查询,因此每个Firehalls功能的重复。
- 这邮寄地址表正在加入功能邮寄地址场地。
- 这AddressPoints表(包含CivicNo属性)与邮寄地址表(不是发起者功能),使用不同的键 -AddressId。
由于属性在默认情况下是隐藏的,所以我们选择一组属性在输出特性中公开。
具有查询结果的功能通过结果端口,并通过SQL语句添加新属性。
多个特性的结果可以在表视图中看到。
使用说明
- 如果数据库支持空间谓词,则可以使用空间查询。
- 对于一个数据库表到特性的简单连接,DatabaseJoiner可能更有效(如果关键字段是索引的)。DatabaseJoiner不需要了解SQL。
- SQLExecutor只能用于启用SQL的数据源(除了发起者功能)。要使用具有非SQL数据的SQL,请考虑InlineQuerier。
- 如果要查询的所有数据已经存在于能够的SQL的数据源中,则通常最有效地使用SQLCreator.或SQLExecutor,因为在数据库进入FME环境之前直接执行数据的查询和过滤。
- 在SQL查询完成之前,输入此转换器的特性不会输出。这种行为确保了其他SQLExecutor转换器(如果存在的话)在前一个查询完成之前不会执行它们的查询。
选择功能加入方法
许多转换器可以根据匹配的属性、表达式和/或几何图形执行数据连接。在为特定的连接任务选择一个连接时,需要考虑连接的复杂性、数据格式、索引、冲突处理和期望的结果。有些转换器使用SQL语法,有些则直接访问外部数据库。他们可能支持,也可能不支持列表属性阅读和创造。
通常,选择最专用于您需要完成的任务的那个将提供最佳性能结果。如果有多种方式来做(通常是这种情况),则在性能测试备用方法上花费的时间可能是值得的。性能可能会因读取外部表而存在的密钥索引(而不是在工作区中的功能)时变化。
变压器 |
搭配 |
使用SQL语句 |
可以创建列表 |
输入类型 |
值得注意的 |
描述 |
---|---|---|---|---|---|---|
featurejoiner. | 属性 | 没有 | 没有 | 特征 |
|
通过基于公共密钥属性值组合特征的属性和/或几何来连接功能。执行相当于内部,左和完整的SQL连接。 |
FeatureMerger | 属性 | 没有 | 是的 | 特征 |
|
根据匹配的关键属性值和表达式,将一组特征的属性和/或几何形状合并到另一组特征上。 |
listbasedfeaturemerger. | 列表属性到单个属性 | 没有 | 是的 | 特征 |
|
将一组特征的属性和/或几何合并到另一组特征上,基于匹配列表属性具有key属性值和表达式的值。 |
InlineQuerier | SQL查询 | 是的 | 没有 | 特征 |
|
从传入功能创建一组SQLite数据库表,对它们执行SQL查询,并将结果作为特征输出。 |
SQLCreator. | SQL查询 | 是的 | 没有 | 外部DB. |
|
生成FME功能,从对数据库执行一次SQL查询的结果。为SQL查询结果的每行创建一个FME功能。 |
SQLExecutor | SQL查询 | 是的 | 没有 | 外部DB. |
|
对数据库执行SQL查询。对于进入转换器的每个初始特性,都会向数据库发出一个查询。初始特性和查询结果都可以作为特性输出。 |
DatabaseJoiner | 属性 | 没有 | 是的 | 外部DB及特性 |
|
基于公共密钥或键,将外部表中的属性从外部表加入到工作区中的功能。不需要SQL知识。非阻塞变压器。 |
匹配 | 几何和/或属性 | 没有 | 是的 | 特征 |
|
检测彼此匹配的功能。在具有匹配的几何形状,匹配属性值或两者匹配时,将声明要匹配。也可以指定必须在要素之间不同的属性列表。 如果仅在属性上匹配(不是几何),则使用FeatureMerger或其他方法将提供更好的性能。 |
配置
输入端口
触发要执行SQL查询的功能。
输出端口
由SQL查询产生的功能。
输入发起人带有附加属性的特性(_matched_records.)包含由于该特征发起的SQL查询结果而生成的功能数。
参数
格式 | 选择数据库格式。 |
数据集/连接 | 根据选择的格式,选择数据集或使用/配置数据库连接。 |
参数 | 格式特定的参数 |
Coord。系统 | 数据库的坐标系连接到(不是发起者),以及结果输出功能的坐标系。 留下默认(从源读取)或使用坐标系库中的选择。 |
SQL语句 | 使用文本编辑器指定SQL查询。 可以通过使用关键字指定的字符分隔多个SQL命令fme_sql_delimiter.,嵌入在SQL语句的开始。此关键字后立即的单个字符将用于拆分SQL,然后将其发送到数据库以进行执行。(注意:在字符前包含一个空格。) 可以在一个连字符之前,指示应忽略错误。 下面的示例包含两个SQL命令,其中第一个命令的错误将被忽略: fme_sql_delimiter; - 从Tablea中选择* Select * from tableb; |
曝光的属性 | 输入要在查询创建的特性上公开的属性名称。属性将按照列表中指定的顺序输出。 笔记:默认情况下,生成特性的属性是隐藏的。通过输入属性名指定要公开哪些属性。单击Attributes to Expose参数旁边的浏览按钮。您也可以使用SQL语句来填充列表,按下“从SQL Query…”并输入一个SQL查询。来自第一个匹配特性的列将用于填充属性列表。 |
组合属性 | 结果属性仅限:结果特征属性仅包含查询结果。 如果冲突,请保持发起者属性:结果特征属性是查询结果和发起者功能的属性的组合。如果存在冲突,则从启动器功能中取出属性值。 如果冲突,请保持结果属性:结果特征属性是查询结果和启动器功能的属性的组合。如果存在冲突,则从查询结果中取出属性值。 |
结合几何 | 结果几何特性:结果功能的几何形状仅包括由SQL查询产生的那些。 发起者几何只有:结果特征的几何形状仅包括引发器特征中存在的那些。 聚合启动器和结果几何:从发起者功能和SQL查询的几何形状填充结果功能。 |
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来分配转换器参数。更高级的函数,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击除适用参数外。有关更多信息,请参见变压器参数菜单选项。
定义值
有几种方法可以在变压器中定义使用的值。最简单的是简单地输入值或字符串,其可以包括各种类型的函数,例如属性引用,数学和字符串函数和工作区参数。有许多工具和快捷方式可以帮助构造值的值,通常可以从与值字段相邻的下拉上下文菜单中提供。
使用文本编辑器
文本编辑器提供了一种方便的方法来构建来自各种数据源的文本字符串(包括正则表达式),例如属性,参数和常量,其中结果直接在参数内使用。
使用算术编辑器
算术编辑器提供了一种方便的方法来构建来自各种数据源的数学表达式,例如属性,参数和特征函数,其中结果直接在参数内使用。
条件值
根据通过或失败的一个或多个测试条件设置值。
内容
表达式和字符串可以包括许多函数,字符,参数等 - 是否直接在参数中输入或使用其中一个编辑器构造。
参考
处理行为 |
不适用 |
功能持有 |
不适用 |
依赖性 | 格式依赖-某些格式可能需要第三方驱动程序 |
FME许可级别 | FME专业版及以上 |
别名 | |
历史 | |
类别 |
FME社亚搏国际在线官网区
FME社区是演示亚搏国际在线官网,TOS,文章,常见问题和更多的地方。获取您的问题的答案,从其他用户学习,并建议,投票和评论新功能。
搜索关于SQLExecutor的所有结果关于FME社区。亚搏国际在线官网
例子可能包含根据开放政府许可证的信息 - 温哥华