【发布时间】:2019-10-26 15:55:27
【问题描述】:
我需要从错误日志中提取单词和单词序列。
以下日志示例:
2019.06.08 14:32:36 ERR 10298587 2019-06-07 PROJECT_NAME script.sql 4483 2646 HY000 [NCR] [Teradata DBMS] : No more spool space in aload50.
2019.06.08 14:32:36 ERR 10298587 2019-06-07 PROJECT_NAME script.sql 4483 2646 HY000 [NCR] [Teradata DBMS] : No more spool space in aload50. (ef)
2019.06.08 14:32:36 ERR 10298587 2019-06-07 PROJECT_NAME script.sql 4483 2646 HY000 [NCR] [Teradata DBMS] : No more spool space in dload50.
2019.06.08 14:32:36 ERR 10298587 2019-06-07 PROJECT_NAME script.sql 4483 2646 HY000 [NCR] [Teradata DBMS] : No more spool space in dload50. (ef)
message=[NCR] [Teradata DBMS] : No more spool space in aload50. (ef)
message=[NCR] [Teradata DBMS] : No more spool space in dload50. (ef)
message=[NCR] [Teradata DBMS] : No more spool space in aload50. (ee)
message=[NCR] [Teradata DBMS] : No more spool space in dload50. (ee)
我需要提取子字符串:
错误日志:
[Teradata DBMS]:aload50 中没有更多的假脱机空间。
没有(例如)
和用户名: 例如:
加载50
用户名可以是:
aload01 到 aload999
和
dload01 到 dload999
select
REGEXP_SUBSTR('2019.06.08 14:32:36 ERR 10298587 2019-06-07 PROJECT_NAME script.sql 4483 2646 HY000 [NCR] error_message[Teradata DBMS] : No more spool space in aload50.',' regexp_for_error_log') AS error_log,
REGEXP_SUBSTR('2019.06.08 14:32:36 ERR 10298587 2019-06-07 PROJECT_NAME script.sql 4483 2646 HY000 [NCR] [Teradata DBMS] : No more spool space in aload50.',' regexp_for_user_name') AS user_name,
FROM DUAL;
【问题讨论】:
-
您期望的 exact 输出是什么?
-
@jarlh 数据库 oracle
-
@TimBiegeleisen error_log:[Teradata DBMS]:aload50 中没有更多的假脱机空间用户名:aload50
-
@dnoeth 我使用。我在 Oracle 上的 Teradata 上的 ETL 处理错误日志。