使用输入函数创建时间系列

可以通过 INSERT 语句使用时间系列输入函数创建时间系列。

使用 INSERT 创建时间系列和插入数据的语法是:
insert into table_name values(
   'col1_value',
   'col2_value',
   ...,
   'parameter_input_string'
);
parameter_input_string 的值包含时间系列信息。所有数据类型都有关联的输入函数,在 ASCII 数据插入列时将自动调用该函数。如果是 TimeSeries 数据类型,输入将有部分数据嵌入到文本中。此信息用于传送日历的名称、原点的时间戳记、阈值、容器和初始时间系列数据。参数输入字符串的格式为:
paramname(value), paramname(value), ..., [data_element, ...] 
这些值是特定于参数的,且每个值都有不同的格式。下表指示与每个参数关联的值。
表 1. 用于将数据插入时间系列的参数
参数名称 必需
calendar 要使用的日历的名称。没有缺省名称。
container 要使用的容器的名称。缺省情况下无容器;时间系列必须适合数据库行,否则永远也不会将其指定给表。如果时间系列超出阈值大小,那么必须设置容器。
datafile 要使用的输入文件的名称。格式与 BulkLoad 函数相同。如果存在数据文件,那么不允许使用“带括号的”数据。缺省值为 NULL
irregular 是(对于不规则的时间系列) 没有值,只有字符串 irregular。对于不规则的时间系列必须包括此参数,但对于规则的时间系列不能包括此参数。
metadata 要添加到时间系列的元数据。可为 NULL。如果提供了元数据,那么也必须提供元数据的类型。
metatype 元数据的数据类型。
origin 时间系列的原点的时间戳记。缺省原点为日历开始日期。
regular 没有值,只有字符串 regular。对于规则的时间系列此参数是可选的,但对于不规则的时间系列不能包括此参数。
threshold 超过该元素数的数据将放入容器而不放入行。缺省值为 20。行中的时间系列不得大于 1500 个字节。

如果参数未包含在输入字符串中,那么将使用其缺省值。

如果未指定数据文件,那么可以在参数后提供要放置到时间系列中的数据(即数据元素),并括在方括号中:
[(value, value, value, ...)@timestamp, (...), ...]

元素由数据值组成,每个数据值以逗号分隔。每个元素中的数据值对应于 TimeSeries 子类型中的列,但不包括初始时间戳记列。每个元素都括在括号中,后跟 @ 符号和时间戳记。时间戳记对于规则的时间系列来说是可选的,但对于不规则的时间系列来说是强制实施的。空数据值或元素使用单词 NULL 表示。如果不存在数据元素,那么函数将创建空时间系列。

示例 1:创建规则的时间系列

以下示例显示在表 daily_stocks 中创建规则时间系列的 INSERT 语句:
insert into daily_stocks values (1234, 'GBase 8s',
         'regular, calendar(daycal), 
[(350, 310, 340, 1999), (362, 320, 350, 2500)]');

此 INSERT 语句将创建一个规则的时间系列,其开始日期和时间由名为 daycal 的日历指定。时间系列中的前两个元素使用带括号的数据填充。由于没有指定阈值参数,因此将使用它的缺省值。这样,如果超过 20 个元素放置在时间系列中,数据库服务器会尝试将数据移动到容器中,但因为没有指定任何容器,所以会出现错误。

示例 2:创建不规则的时间系列

以下示例显示在表 activity_stocks 中创建不规则时间系列的 INSERT 语句:
insert into activity_stocks values (
   600, 'irregular, container(ctnr_stock), origin(2005-10-06 00:00:00.00000),
calendar(daycal), [(6.25,1000,1,7,2,1)@2005-10-06 12:58:09.12345, (6.50, 2000,
1,8,3,1)@2005-10-06 12:58:09.23456]');

该 INSERT 语句将创建一个不规则的时间系列,其开始日期为 2005 年 10 月 6 日,开始时间由名为 daycal 的日历指定。将插入两行带有指定时间戳记的数据。