首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgresql与log的字符串比较

postgresql与log的字符串比较
EN

Stack Overflow用户
提问于 2013-12-05 09:34:37
回答 1查看 53关注 0票数 0

我们有一个包含类型字符串的数据库:

无法写入块。EOM的设备。dev=$device ($device_path)

然后,我们有了生成日志条目的程序,例如

2013年-10-10 15:37:07程序-sd JobId 50345:致命错误: block.c:434不能写块.EOM的设备。dev="st0“(/dev/st0)

所以,我们可以使用SELECT * FROM X WHERE Y LIKE="%LOG%",但是,字符串是不一样的,在我们的数据库中,我们有一个干净的字符串,而在日志中,我们有时间戳、更多的信息以及$device$device_path的数据,所以查询将返回0结果,因为两者都不匹配.

我们试图根据数据库中的内容返回一个错误代码,如果查询的结果不是0.

有什么方法可以用regex或者别的什么方法来完成这个任务吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-05 11:41:17

假设您的错误消息模板表如下所示:

代码语言:javascript
复制
create table error_templates(id serial primary key, template text);

然后您可以使用这样的查询:

代码语言:javascript
复制
select id 
from error_templates 
where $1 like '%' || regexp_replace(template, '\$\w+', '%', 'g') || '%';

$1是您要查找的错误日志的占位符。

regex_replace将消息中的变量替换为%。它假设变量包含一个美元符号,后面跟着一个或多个单词字符(a-zA-Z0-9_) --您可能需要根据实际变量名来调整它。

还请注意,这可能是缓慢的。它必须扫描整个表;不能使用索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20396283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档