Aspen-Tech KB:100949 如何正确地使用SQLplus将旧数据添加到新InfoPlus.21记录
解决办法ID: 100949
产品: SQLplus
主题: Software
标题: 如何正确地使用SQLplus将旧数据添加到新InfoPlus.21记录
与这篇文档相关的解决方案、FAQ或缺陷文章
技术要点:102892 如何使用SQLplus将数据插入IP.21记录的历史重复区域
技术要点:103040 如何插入比记录创建时间早的数据;如何使用xoldestok
技术要点:107025 如何使用VB在历史记录中插入带有指定时间戳的数据
技术要点文本:
编辑时间:2000-10-06 10:46PM
适用版本:
-------------------------------------------
InfoPlus.21 v1.1 及以后版本
问题陈述:
-------------------------------------------
如何使用SQLplus的QTIMESTAMP函数将旧数据添加到新的InfoPlus.21记录中
解决办法:
--------------------
有一种想法认为可以使用典型的SQLplus update语句来替换一个记录的IP_INPUT_VALUE和IP_INPUT_TIME字段的值,例如:
UPDATE ip_analogdef
SET ip_input_time = ’
WHERE name = ‘atcai’;
这样做的结果是更改了IP_INPUT_VALUE的值,并经过压缩后传送给了IP_VALUE,IP_VALUE_TIME的值虽然也被更新,但是IP_VALUE_TIME的值是当前时间,而这不是我们想要的结果。
如何处理这个问题?可以通过使用SQLplus提供的QTIMESTAMP函数来解决。例如:
1. 确保插入的数据是按照日期时间的顺序。
2. 以如下方式使用SQLplus语句:
UPDATE ip_analogdef
SET ip_input_value = 1,
QTIMESTAMP(ip_input_value) = ‘2
WHERE name = ‘atcai’
如果是对一个没有历史数据的新记录,或者历史数据中没有大于要插入数据日期的记录,使用上面的语句能够在当前时刻将数据插入到历史数据中。但如果是这两个情况中的任何一个,则需要使用在#102892中描述的“插入数据到历史记录”方法。
注意上述的QTIMESTAMP()函数,以及传递给它的参数是一个字段数据类型。关于该函数和其它质量状态函数的内容请参见SQLplus用户手册或在线帮助。
注意:如果碰到类似如下的错误消息。
Error writing to “ IP_INPUT_VALUE”: Data changed but no history generated (bad key time stamp) as line <#>.
则很可能需要增加历史库中PAST时间参数的小时数。从管理员工具(Administrator)中右键单击历史库名称选择Properties,增加PAST参数的值以便能够覆盖到要插入数据的时间,为了使所作的修改生效,必须停止并重新启动数据库。如果记录中要包含比创建它的时间点还早的数据,则需要使用XOLDESTOK.EXE工具。该工具位于code目录中,在IP.21 V1.1的发行注释和#103040解决方案中描述了有关于XOLDESTOK.EXE工具使用的说明。
关键词
--------------------
QTIMESTAMP
History
Old data
浙公网安备 33010602011771号