FREGEXPARSER
解析正则表达式,将各列与指定正则表达式组的内容相匹配。
该解析器仅可用于 Flex 表。所有 Flex 解析器均会将数据作为单个 VMap 存储在 LONG VARBINAR_raw__
列中。如果某个数据行过大而无法适应该列,该数据行将被拒绝。Vertica 在加载带 NULL 指定列的数据时支持 NULL 值。
语法
FREGEXPARSER ( pattern=[parameter‑name='value'[,...]] )
参数
pattern
- 指定要匹配的数据正则表达式。
默认值: 空字符串 (
""
) use_jit
- 布尔值,指定在解析正则表达式时是否使用实时编译。
默认值:false
record_terminator
- 指定用于分隔输入记录的字符。
默认值:
\n
logline_column
- 一个字符串,用于捕获包含与正则表达式相匹配的完整字符串的目标列。
默认值: 空字符串 (
""
)
示例
这些示例使用以下正则表达式,它们搜索包括 timestamp
、date
、thread_name
和 thread_id
字符串的信息。
当心
出于显示目的,此示例正则表达式添加了换行符以拆分长文本行。要在查询中使用此表达式,请先复制并编辑示例,以移除任何换行符。此示例表达式加载任何 thread_id
十六进制值,无论其是否包含 0x
前缀 (<thread_id>(?:0x)?[0-9a-f]+)
。
'^(?<time>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d+)
(?<thread_name>[A-Za-z ]+):(?<thread_id>(?:0x)?[0-9a-f]+)
-?(?<transaction_id>[0-9a-f])?(?:[(?<component>\w+)]
\<(?<level>\w+)\> )?(?:<(?<elevel>\w+)> @[?(?<enode>\w+)]?: )
?(?<text>.*)'
-
创建一个 Flex 表 (
vlog
),以包含 Vertica 日志文件的结果。针对此示例,我们复制了一份目录/home/dbadmin/data/vertica.log
中的日志文件:=> create flex table vlog1(); CREATE TABLE
-
将
fregexparser
用于示例正则表达式,以加载日志文件中的数据。请务必在使用此处显示的此表达式之前移除任何行字符:=> copy vlog1 from '/home/dbadmin/tempdat/KMvertica.log' PARSER FREGEXPARSER(pattern=
'^(?<time>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d+) (?<thread_name>[A-Za-z ]+):(?<thread_id>(?:0x)?[0-9a-f]+) -?(?<transaction_id>[0-9a-f])?(?:[(?<component>\w+)] \<(?<level>\w+)\> )?(?:<(?<elevel>\w+)> @[?(?<enode>\w+)]?: ) ?(?<text>.*)'
-
成功加载数据后,将 MAPTOSTRING() 函数用于表的
__raw__
列。查询返回的四行 (limt 4
) 为使用fregexparser
解析的KMvertica.log
文件的正则表达式结果。输出将显示前面带或不带0x
的thread_id
值: -
=> select maptostring(__raw__) from vlog1 limit 4; maptostring ------------------------------------------------------------------------------------- { "text" : " [Init] <INFO> Log /home/dbadmin/VMart/v_vmart_node0001_catalog/vertica.log opened; #2", "thread_id" : "0x7f2157e287c0", "thread_name" : "Main", "time" : "2017-03-21 23:30:01.704" } { "text" : " [Init] <INFO> Processing command line: /opt/vertica/bin/vertica -D /home/dbadmin/VMart/v_vmart_node0001_catalog -C VMart -n v_vmart_node0001 -h 10.20.100.247 -p 5433 -P 4803 -Y ipv4", "thread_id" : "0x7f2157e287c0", "thread_name" : "Main", "time" : "2017-03-21 23:30:01.704" } { "text" : " [Init] <INFO> Starting up Vertica Analytic Database v8.1.1-20170321", "thread_id" : "7f2157e287c0", "thread_name" : "Main", "time" : "2017-03-21 23:30:01.704" } { "text" : " [Init] <INFO> Compiler Version: 4.8.2 20140120 (Red Hat 4.8.2-15)", "thread_id" : "7f2157e287c0", "thread_name" : "Main", "time" : "2017-03-21 23:30:01.704" } (4 rows)