我认为无论你把长度设成多大,占用的存储只由实际数据大小决定。所以设置成MAXLEN=“”是没毛病的。 不过,不确认是否有其他影响, 比如索引占用的空间。 

你说“建表”,可说的又不是create table。如果用create table建表,你总得给个字段长度吧。varchar字段如果你用太长了对于3方工具或者你要抽数到其他数据库的时候会有问题吗? 假设你用了MAXLEN="" , 创建的字段是varchar还是clob?  

我对xml校验的问题也有很多疑问,不知道你这样的方案是不是最好的。 你的方案是逐一对property做标签去处理,还是觉得太麻烦了, 是不是有个interface的实现可能呢? 

顺便说一句, 你的场景设置有点问题。 源头是一个xml, 目的地是一个数据库的表, 中间用对象的方式去处理,好吗?

这是两件事:1. 把log里的记录结构化。 2. 保存到DB。

关于1,如果你用的是最新的iris版本, 可以直接拿到结构化的log, 看这个链接: https://docs.intersystems.com/iris20221/csp/docbook/Doc.View.cls?KEY=ALOG

如果是老版本没有结构化,您得自己去做文本处理。好在这个log非常简单。比如下面两行:

08/30/22-11:03:57:775 (6964) 2 [Utility.Event] Previous system shutdown was abnormal, system forced down or crashed. Fast shutdown complete.
08/30/22-11:03:59:541 (7716) 2 [Utility.Event] Preserving journal files c:\intersystems\hcdemo\mgr\journal\20220824.002 and later for journal recovery and transaction rollback
如果您要只是把日期时间,警告类型,级别,内容分开,它基本就是分开的,用的是空格。

如果您想把内容页结构化,这就花功夫了, 我上面的链接里的工具也不做这个事。

2. 存入DB您得自己解决,IRIS提供文本,API, 没有SQL查询,好在有一大堆监控工具都干这事,就是监控文本文件写入数据库。

关注者:
正在关注:
Hao 尚未关注任何人。
Global Masters 徽章: