文档说明

扩展标注 CSV

扩展注释CSV提供了额外的注释和选项,用于指定CSV数据应如何转换为行协议并写入InfluxDB。InfluxDB使用csv2lp将CSV转换为行协议。扩展注释CSV支持所有注释CSV注释。

Flux的csv.from函数仅支持注释CSV,而不是扩展注释CSV。

要将数据写入InfluxDB,行协议必须包含以下内容

扩展CSV注释识别列表示的行协议元素。

CSV注释

扩展注释CSV扩展并添加以下注释

数据类型

使用#datatype注释来指定列表示的行协议元素。要显式地将列定义为特定数据类型的字段,请在注释中使用字段类型(例如:stringdoublelong等)。

数据类型结果行协议
测量列是测量
标签列是标签
dateTime列是时间戳
字段列是字段
忽略列被忽略
string列是字符串字段
double列是浮点字段
long列是整数字段
unsignedLong列是无符号整数字段
boolean列是布尔字段

测量

表示该列是测量

标签

表示该列是标签列标签标签键列值标签值

dateTime

表示该列是时间戳timedateTime的别名。如果时间戳格式包括时区,则解析的时间戳包括时区偏移。默认情况下,所有时间戳都是UTC。您还可以使用#timezone注释将时间戳调整为特定时区。

只能有一个dateTime列。

influx write命令将时间戳转换为Unix时间戳。将时间戳格式附加到dateTime数据类型,后跟(:)。

#datatype dateTime:RFC3339
#datatype dateTime:RFC3339Nano
#datatype dateTime:number
#datatype dateTime:2006-01-02
支持的时戳格式
时戳格式描述示例
RFC3339RFC3339时间戳2020-01-01T00:00:00Z
RFC3339NanoRFC3339时间戳2020-01-01T00:00:00.000000000Z
数字Unix时间戳1577836800000000000

如果使用数字时间戳格式且时间戳不是以纳秒为单位的,请使用influx write --precision标志指定时间戳精度。有关时间戳精度的详细信息,请参阅。

自定义时间戳格式

要指定自定义时间戳格式,请使用Go时间包中描述的格式。例如:2020-01-02

字段

表示该列是一个字段。列标签是字段键。列值是字段值

使用field数据类型,字段值将原样复制到行协议中。有关行协议值及其写入InfluxDB的方式的详细信息,请参阅行协议数据类型和格式。我们通常建议在注释中指定字段类型

忽略

该列将被忽略,不会写入InfluxDB。

字段类型

该列是指定类型的字段。列标签是字段键。列值是字段值

string

列是字符串字段。

double

列是浮点数字段。默认情况下,InfluxDB期望使用小数点(.)将小数部分与整数部分分开的浮点值。如果列值包含或使用其他分隔符,例如逗号(,)来可视地将大数字分组,请指定以下浮点分隔符

  • 小数分隔符:将小数部分与整数部分分开。
  • 忽略分隔符:可视地将整数部分分成组,但在解析浮点值时忽略分隔符。

使用以下语法指定浮点分隔符

# Syntax
<fraction-separator><ignored-separator>

# Example
.,

# With the float separators above
# 1,200,000.15 => 1200000.15

将浮点分隔符附加到double数据类型注释后面,并用冒号(:)分隔。例如

#datatype "double:.,"

如果您的浮点分隔符包含逗号(,),请用双引号("")将列注释括起来,以防止逗号被解析为列分隔符或分隔符。您还可以定义自定义列分隔符

long

列是整数字段。如果列值包含分隔符,例如点(.)或逗号(,),请指定以下整数分隔符

  • 小数分隔符:将小数部分与整数部分分开。在转换为行协议时,整数值将在小数分隔符处截断。
  • 忽略分隔符:可视地将整数部分分成组,但在解析整数值时忽略分隔符。

使用以下语法指定整数分隔符

# Syntax
<fraction-separator><ignored-separator>

# Example
.,

# With the integer separators above
# 1,200,000.00 => 1200000i

将整数分隔符附加到long数据类型注释后面,并用冒号(:)分隔。例如

#datatype "long:.,"

如果您的整数分隔符包含逗号(,),请用双引号("")将列注释括起来,以防止逗号被解析为列分隔符或分隔符。您还可以定义自定义列分隔符

unsignedLong

列是一个 无符号整数(uinteger) 字段。如果列值包含分隔符,如点(.)或逗号(,),则指定以下 uinteger 分隔符

  • 小数分隔符:将小数部分与整数部分分开。 在转换为行协议时,uinteger 值在分数分隔符处截断。
  • 忽略的分隔符:在视觉上将整数分为组,但在解析 uinteger 值时忽略分隔符。

使用以下语法指定 uinteger 分隔符

# Syntax
<fraction-separator><ignored-separator>

# Example
.,

# With the uinteger separators above
# 1,200,000.00 => 1200000u

uinteger 分隔符 添加到 long 数据类型注释后跟一个冒号(:)。例如

#datatype "unsignedLong:.,"

如果您的 uinteger 分隔符 包含逗号(,),则将列注释用双引号("")括起来,以防止逗号被解析为列分隔符或分隔符。您还可以 定义一个自定义列分隔符

boolean

列是一个 布尔 字段。如果列值不是 支持的布尔值,请使用以下语法指定 布尔格式

# Syntax
<true-values>:<false-values>

# Example
y,Y,1:n,N,0

# With the boolean format above
# y => true, Y => true, 1 => true
# n => false, N => false, 0 => false

布尔格式 添加到 boolean 数据类型注释后跟一个冒号(:)。例如

#datatype "boolean:y,Y:n,N"

如果您的 布尔格式 包含逗号(,),则将列注释用双引号("")括起来,以防止逗号被解析为列分隔符或分隔符。您还可以 定义一个自定义列分隔符

常量

使用 #constant 注释为每行定义一个常量列标签和值。 #constant 注释提供了一种方法,用于提供 CSV 数据中不存在的 行协议元素

使用以下语法定义常量

#constant <datatype>,<column-label>,<column-value>

要提供多个常量,请将每个 #constant 注释放在单独的一行上。

#constant measurement,m
#constant tag,dataSource,csv

对于具有 measurementdateTime 数据类型的常量,常量定义中的第二个值是 列值

时区

使用 #timezone 注释将时间戳更新到特定时区。默认情况下,时间戳被解析为 UTC。使用 ±HHmm 格式指定相对于 UTC 的时区偏移。

严格模式

使用 :strict 关键字来指示解析 longunsignedLong 数据类型时的精度损失。通过使用以 strict 结尾的列数据类型来启用严格模式,例如 long:strict。当以严格模式解析来自字符串值(具有小数位数)的 longunsignedLong 值时,整个 CSV 行会失败。如果不处于严格模式,则打印一条警告,说明 行 x: 列 y: '1.2' 截断为 '1' 以适应 long 数据类型。有关严格解析的更多信息,请参阅 包文档

时区示例
时区偏移
美国山地夏令时-0600
中欧夏令时+0200
澳大利亚东部标准时间+1000
阿皮亚夏令时+1400
时区注释示例
#timezone -0600

连接

#concat 注释添加了一个新列,该列根据类似 bash 的字符串插值文字和引用现有列标签的变量从现有列中连接。

例如

#concat,string,fullName,${firstName} ${lastName}

当从多个列构建时间戳时,这特别有用。例如,以下注释将组合给定的 CSV 列以形成时间戳

#concat,dateTime:2006-01-02,${Year}-${Month}-${Day}

Year,Month,Day,Hour,Minute,Second,Tag,Value
2020,05,22,00,00,00,test,0
2020,05,22,00,05,00,test,1
2020,05,22,00,10,00,test,2

定义自定义列分隔符

如果列使用除逗号以外的字符分隔,请在CSV文件的第一行使用sep关键字定义自定义分隔符。

sep=;

注释缩写

扩展注释CSV支持注释缩写。使用以下语法在每个列标题行中包含列标签、数据类型和(可选)默认值

<column-label>|<column-datatype>|<column-default-value>
示例注释缩写
m|measurement,location|tag|Hong Kong,temp|double,pm|long|0,time|dateTime:RFC3339
weather,San Francisco,51.9,38,2020-01-01T00:00:00Z
weather,New York,18.2,,2020-01-01T00:00:00Z
weather,,53.6,171,2020-01-01T00:00:00Z
缩写的解释
  • m列表示测量,没有默认值。
  • location列是一个标签,默认值为Hong Kong
  • temp列是一个字段,包含浮点数double)值,没有默认值。
  • pm列是一个字段,包含整数long)值,默认值为0
  • time列表示时间戳,使用RFC3339时间戳格式,没有默认值。
结果行协议
weather,location=San\ Francisco temp=51.9,pm=38i 1577836800000000000
weather,location=New\ York temp=18.2,pm=0i 1577836800000000000
weather,location=Hong\ Kong temp=53.6,pm=171i 1577836800000000000

这个页面有帮助吗?

感谢您的反馈!


Flux的未来

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

阅读更多

InfluxDB v3增强功能和InfluxDB Clustered现已上市

新功能,包括更快的查询性能和管理工具,推动了InfluxDB v3产品线的进步。InfluxDB Clustered现已上市。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著增强,并提供了新的管理工具。这些增强包括用于监控InfluxDB集群健康状况的操作仪表板、InfluxDB Cloud Dedicated中的单一登录(SSO)支持以及用于令牌和数据库的新管理API。

了解新的v3增强功能


InfluxDB集群版现已正式发布

InfluxDB集群版现已正式发布,为您在自管理堆栈中提供InfluxDB v3的强大功能。

与我们谈谈InfluxDB集群版

由TSM驱动的InfluxDB Cloud