Documentation

带注释的CSV

您可以使用带注释的CSV和InfluxDB HTTP API将数据写入InfluxDB,或在InfluxDB UI中上传CSV文件

CSV 表格必须使用 UTF-8 编码,并按照 UAX15 中定义的 Unicode 正规化形式 C 编码。InfluxDB 在换行符之前会移除回车符。

CSV 响应格式

InfluxDB 注释的 CSV 支持以下列出的编码。

表格

一个表可能有以下行和列。

  • 注释行: 描述列属性。

  • 表头行: 定义列标签(每个表一个表头行)。

  • 记录行: 描述表中的数据(每行一个记录)。

示例
#group,false,false,true,true,false,false,true,true,true,true
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,double,string,string,string,string
#default,mean,,,,,,,,,
,result,table,_start,_stop,_time,_value,_field,_measurement,host,region
,,0,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:52:00Z,15.43,mem,m,A,east
,,1,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:52:00Z,59.25,mem,m,B,east
,,2,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:52:00Z,52.62,mem,m,C,east

除了数据列,表格可能还包括以下列:

  • 注释列:显示注释的名称。 仅在注释行中使用,并且始终是第一列。 值可以为空或是一个支持的 注释。 响应格式使用逗号 (,) 将注释名称与行中的值分隔开。 为此,表中的行以一个前导逗号开始;您会注意到整个表的长度都有一个空列。

  • 结果列: 包含查询指定的结果名称。

  • 表列: 包含结果中每个表的唯一 ID。

多个表和结果

如果一个文件或数据流包含多个表或结果,则必须满足以下要求:

  • 表格列指示一行属于哪个表。
  • 表中的所有行都是连续的。
  • 空行在以下情况下划定新的表边界:
    • 在结果中不共享公共表模式的表之间。
    • 在连接的CSV文件之间。
  • 每个新表的边界都以新的注释和标题行开始。
示例
#group,false,false,true,true,false,false,true,true,true,true
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,double,string,string,string,string
#default,_result,,,,,,,,,
,result,table,_start,_stop,_time,_value,_field,_measurement,host,region
,,0,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,15.43,mem,m,A,east
,,1,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,59.25,mem,m,B,east
,,2,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,52.62,mem,m,C,east

#group,false,false,true,true,true,true,false,false,true,true
#datatype,string,long,string,string,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,string,string,string
#default,_result,,,,,,,,,
,result,table,_field,_measurement,_start,_stop,_time,_value,host,region
,,3,mem_level,m,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,ok,A,east
,,4,mem_level,m,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,info,B,east
,,5,mem_level,m,2022-12-31T05:41:24Z,2023-01-31T05:41:24.001Z,2023-01-01T00:00:00Z,info,C,east

方言选项

Flux支持以下方言选项用于 text/csv 格式。

选项描述默认
header如果为真,则包含标题行。true
delimiter用于分隔列的字符。,
quoteChar用于引用包含分隔符的值的字符。"
annotations要编码的注释列表(数据类型、组或默认值)。empty
commentPrefix用于识别评论的字符串前缀。始终添加到注解中。#

注释

注释行描述列属性,且以 #(或 commentPrefix 值)开头。 注释行中的第一列始终包含注释名称。 后续列包含注释值,如下表所示。

注释名称描述
datatype一个 数据类型线协议元素描述数据的类型或该列代表的线协议元素。
默认列的数据类型的值用于空值行的值。

数据类型

数据类型描述
布尔型“真”或“假”
unsignedLong无符号64位整数
长整型带符号的64位整数
双精度IEEE-754 64位浮动小数
字符串UTF-8 编码的字符串
base64BinaryRFC 4648 定义的 base64 编码字节序列
dateTime时间瞬间,可以后跟一个冒号 : 和格式的描述(数字,RFC3339,RFC3339Nano)
duration表示为无符号64位整数的持续时间,以纳秒为单位

行协议元素

datatype 注释接受 数据类型线协议元素。 线协议元素标识在使用 influx write 命令 将注释的 CSV 写入 InfluxDB 时,列是如何转换为线协议的。

行协议元素描述
measurement列值是测量值
field (默认)列标题是字段键,列值是字段值
tag列头是标签键,列值是标签值
time列值是时间戳 (dateTime 的别名)
ignoreignored该列被忽略,不包含在行协议中

混合数据类型和行协议元素

带有 数据类型 (除了 dateTime)的列在 #datatype 注释中被视为 字段,当转换为行协议时。没有指定数据类型的列在转换为行协议时默认为 field,并且 列值在行协议中保持不变请参见下面的示例 行协议数据类型和格式

时间列

带有 timedateTime #datatype 注释的列被用作行协议中的时间戳。 如果有多个 timedateTime 列,则最后一列(右侧)被用作行协议中的时间戳。 其他时间列将被忽略,influx write 命令会输出警告。

时间列的值应该是 Unix 纳秒时间戳RFC3339RFC3339Nano

数据类型注解中的示例行协议元素
#group false,false,false,false,false,false,false
#datatype measurement,tag,tag,field,field,ignored,time
#default ,,,,,,
m,cpu,host,time_steal,usage_user,nothing,time
cpu,cpu1,host1,0,2.7,a,1482669077000000000
cpu,cpu1,host2,0,2.2,b,1482669087000000000

结果行协议:

cpu,cpu=cpu1,host=host1 time_steal=0,usage_user=2.7 1482669077000000000
cpu,cpu=cpu1,host=host2 time_steal=0,usage_user=2.2 1482669087000000000
混合数据类型和行协议元素的示例
#group,false,false,false,false,false,false,false,false,false
#datatype,measurement,tag,string,double,boolean,long,unsignedLong,duration,dateTime
#default,test,annotatedDatatypes,,,,,,
,m,name,s,d,b,l,ul,dur,time
,,,str1,1.0,true,1,1,1ms,1
,,,str2,2.0,false,2,2,2us,2020-01-11T10:10:10Z

结果行协议:

test,name=annotatedDatatypes s="str1",d=1,b=true,l=1i,ul=1u,dur=1000000i 1
test,name=annotatedDatatypes s="str2",d=2,b=false,l=2i,ul=2u,dur=2000i 1578737410000000000

错误

如果在执行过程中发生错误,将返回一个表格,内容包括:

  • 包含错误信息的错误列。
  • 一个具有唯一引用代码的参考列,用于识别错误的更多信息。
  • 第二行包含错误属性。

如果发生错误:

  • 在结果出现之前,HTTP 状态代码指示一个错误。错误细节编码在 csv 表格中。
  • 在部分结果发送给客户端后,错误被编码为下一个表格,剩余结果被丢弃。在这种情况下,HTTP 状态码保持为 200 OK。
示例

带有数据类型注释的错误的编码:

#datatype,string,long
,error,reference
,Failed to parse query,897


Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看:

InfluxDB 云端无服务器