关于SQL语句在学习FME中的作用
随着我国地理信息技术的快速发展,信息化测绘技术不断改进完善。各种数据大批量产生,大数据时代来临。身处地理信息行业的我们或多或少都在接触数据库,具有一定的SQL语句基础知识,那么如何在FME中正确使用SQL语句呢?
如果你和小编我一样是先学习的SQL语句再学习的FME,那么你在学习FME的过程中将会事半功倍。接下来小编就把自己在学习SQL语句和学习FME的过程中的一些经验分享给大家。
一:SQL语句在FME中的应用
序号 | 分类 | 转换器或 其他 | 详细介绍 |
1 | SQL语句直接使用 | SQLCreator SQLExecutor | 对数据库执行SQL语句或根据SQL语句将数据库记录提取。FME要素执行数据库连接执行SQL数据库表操作(创建,删除,修改,截断)在数据加载之前或之后创建或删除索引或约束。 |
2 | InlineQuerier | 从传入要素创建一组SQLite数据库表,对它们执行SQL查询,并将结果作为要素输出。 | |
3 | SQL语句语法 | FeatureReader | 通过SQL语句中的WHERE条件对数据的读取进行控制,读取需要的数据。 |
4 | SQL语句常见函数 | 类似功能转换器或文本编辑器中的各类函数 | 通过转换器修改属性或者通过函数修改属性,判断等。 |
5 | SQL语句正则 | StringReplacer StringSearcher ListSearcher | 通过正则修改属性或者通过函数修改属性,筛选数据等。 |
二:SQL语句在FME中直接使用
当我们需要对数据库执行SQL语句时,可以在FME中直接执行SQL语句,再通过FME强大的转换器及多种数据格式的读写能力,那么通过FME对数据库数据进行处理时将取得极大的便利。
转换器SQLCreator :对数据库执行SQL语句或根据SQL语句将数据库记录提取为FME要素。
转换器SQLExecutor:执行数据库连接SQL数据库表操作(创建,删除,修改,截断)在数据加载之前或之后创建或删除索引或约束。
转换器InlineQuerier :从传入要素创建一组SQLite数据库表,对它们执行SQL查询,并将结果作为要素输出。当不知道想要实现某种SQL语句功能时,或不知道FME中的函数或者转换器时,可以在该转换器内写SQL语句替代其作用。
三:SQL语句语法在FME读取数据时的妙用
当我们需要根据特定条件读取数据时,可以通过类似SQL语句中的WHERE语句对数据库进行筛选读取,可以极大提升效率,减少数据读取时间。
支持常见SQL查询语句语法,例如等于、OR、LIKE语句等。
四:SQL语句常见函数在FME处理数据时的替代
当我们想要通过某种条件对属性进行修改或判断时,可在数据库中通过SQL语句的函数逻辑去实现,主要有2中解决方法:
- 通过文本编辑器中的函数(要素函数,字符函数,数学函数,日期时间函数)。
- 通过实现相同功能的转换器。
FME中函数汇总
FME中与SQL函数相同作用的转换器或参数汇总
序号 | 函数类型 | 函数名称 | 含义 | FME函数或转换器 |
1 | 截取函数 | Left | 返回指定最左边的字符数 | Left |
2 | RIGHT | 返回指定的字符最右边的数值 | RIGHT | |
3 | MID | 返回指定位置开始,字符数字符串 | Substring | |
4 | SUBSTRING/SUBSTR | 返回指定位置开始,字符数字符串 | Substring | |
5 | 字符替换 | REPLACE | 替换出现一个指定的字符串 | ReplaceString(函数)/StringReplacer(转换器) |
6 | 字符数统计 | LENGTH | 返回字符串中的字节长度 | StringLength(函数)/StringLengthCalculator(转换器) |
7 | 字符拼接 | CONCAT | 拼接多个字符 | 文本编辑器 |
8 | 搜索字符位置 | LOCATE | 返回字符串的第一个出现的位置 | StringSearcher/ListSearcher |
9 | 大小写替换 | LOWER | 返回参数的小写 | StringCaseChanger转换器 |
10 | UPPER | 转换为大写 | ||
11 | 数值函数 | ROUND | 返回数值表达式四舍五入到整数。可用于舍表达式为数字小数点 | ROUND(函数)/AttributeRounder(转换器) |
12 | 时间函数 | YEAR | 返回日期参数中的年份 | FME函数用特(殊格式字符串标志),详细用法文本编辑器中的帮助 |
13 | MONTH | 返回日期参数的月份 | ||
14 | HOUR | 提取小时 | ||
15 | WEEK | 返回参数的星期数 | ||
16 | CURDATE | 返回当前日期 | ||
17 | CURTIME | 返回当前时间 | ||
18 | DATE_ADD | 将两个日期相加 | ||
19 | DATEDIFF | 将两个日期相减 | ||
20 | DAYNAME | 返回某天在用星期中的名称 | ||
21 | NOW | 返回当前日期和时间 | ||
22 | QUARTER | 返回日期参数所在的季度 |
五:SQL语句正则在FME处理数据时的替代
当我们想要通过某种正则表达式对属性进行修改或筛选时,在数据库中通过正则表达式执行,而FME同样可以通过以下三个转换器(StringReplacer,StringSearcher,ListSearcher)实现。同时在数据库中支持的正则表达式在FME中依然支持。
常见正则表达式汇总表
序号 | 字符 | 字符说明 |
1 | ^ | 匹配字符串的开始位置,若用在中括号中[ ] 时,表示不匹配括号中字符串 |
2 | $ | 匹配字符串的末尾,若设置了表达式对象的Multiline属性,则也匹配’/n’或’/r’ |
3 | . | 匹配单个字符 |
4 | * | 匹配前面子表达式 0次或多次(至少有一次) |
5 | ? | 匹配前面子表达式 0 次或 1 次 (至多有一次) |
6 | + | 匹配前面子表达式 1 次或更多次 |
7 | {m} | 匹配 m 次 |
8 | {m,} | 至少匹配 m 次 |
9 | {m, n} | 至少匹配 m 次但不超过 n 次 |
10 | () | 匹配括号中全部字符 |
11 | [] | 匹配括号中一个字符,范围描述,如[0-9] [a-z] [A-Z] |
12 | {} | 用于限定匹配次数,如 {n}表示匹配n个字符,{n,}表示至少匹配n个字符,{n,m}表示至少n个最多m个 |
13 | \ | 转义字符,如上基本符号匹配都需要转义字符 ,如 * 表示匹配*号 |
14 | \w | 表示英文字母和数字 |
15 | \W | 表示非字母和数字 |
16 | \d | 表示数字 |
17 | \D | 表示非数字 |