扩展标注 CSV
扩展注释CSV提供了额外的注释和选项,用于指定CSV数据应如何转换为行协议并写入InfluxDB。InfluxDB使用csv2lp
库将CSV转换为行协议。扩展注释CSV支持所有注释CSV注释。
Flux的csv.from
函数仅支持注释CSV,而不是扩展注释CSV。
要将数据写入InfluxDB,行协议必须包含以下内容
扩展CSV注释识别列表示的行协议元素。
CSV注释
扩展注释CSV扩展并添加以下注释
数据类型
使用#datatype
注释来指定列表示的行协议元素。要显式地将列定义为特定数据类型的字段,请在注释中使用字段类型(例如:string
、double
、long
等)。
数据类型 | 结果行协议 |
---|---|
测量 | 列是测量 |
标签 | 列是标签 |
dateTime | 列是时间戳 |
字段 | 列是字段 |
忽略 | 列被忽略 |
string | 列是字符串字段 |
double | 列是浮点字段 |
long | 列是整数字段 |
unsignedLong | 列是无符号整数字段 |
boolean | 列是布尔字段 |
测量
表示该列是测量。
标签
dateTime
表示该列是时间戳。 time
是dateTime
的别名。如果时间戳格式
包括时区,则解析的时间戳包括时区偏移。默认情况下,所有时间戳都是UTC。您还可以使用#timezone
注释将时间戳调整为特定时区。
只能有一个dateTime列。
influx write
命令将时间戳转换为Unix时间戳。将时间戳格式附加到dateTime
数据类型,后跟(:
)。
#datatype dateTime:RFC3339
#datatype dateTime:RFC3339Nano
#datatype dateTime:number
#datatype dateTime:2006-01-02
支持的时戳格式
时戳格式 | 描述 | 示例 |
---|---|---|
RFC3339 | RFC3339时间戳 | 2020-01-01T00:00:00Z |
RFC3339Nano | RFC3339时间戳 | 2020-01-01T00:00:00.000000000Z |
数字 | Unix时间戳 | 1577836800000000000 |
自定义时间戳格式
要指定自定义时间戳格式,请使用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
对于具有 measurement
和 dateTime
数据类型的常量,常量定义中的第二个值是 列值。
时区
使用 #timezone
注释将时间戳更新到特定时区。默认情况下,时间戳被解析为 UTC。使用 ±HHmm
格式指定相对于 UTC 的时区偏移。
严格模式
使用 :strict
关键字来指示解析 long
或 unsignedLong
数据类型时的精度损失。通过使用以 strict
结尾的列数据类型来启用严格模式,例如 long:strict
。当以严格模式解析来自字符串值(具有小数位数)的 long
或 unsignedLong
值时,整个 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
这个页面有帮助吗?
感谢您的反馈!