【发布时间】:2018-11-19 02:58:54
【问题描述】:
Influxdb 是一个时间序列数据库,它将数据及其属性存储在表中,通常称为测量值。
influxdb数据库中的表可以以csv格式提取到本地系统吗?
【问题讨论】:
Influxdb 是一个时间序列数据库,它将数据及其属性存储在表中,通常称为测量值。
influxdb数据库中的表可以以csv格式提取到本地系统吗?
【问题讨论】:
使用 CLI 工具 influx 可以设置结果的 csv 输出格式:
influx -host your_host -port 8086 -database 'your_db' -execute 'select * from your_metric' -format 'csv'
如果在本地 InfluxDB 主机上运行命令,则可以省略-host 和 -port 选项。
还有一个有用的-precision 选项来设置时间戳的格式。
【讨论】:
在 CLI 中,可以使用以下命令在本地系统上下载表:
influx -database 'database_name' -execute 'SELECT * FROM table_name' -format csv > test.csv
【讨论】:
或者,您可以使用jq 将 JSON 输出转换为 CSV,如下所示,这还允许您获取 RFC3339 格式的时间戳:
jq -r "(.results[0].series[0].columns), (.results[0].series[0].values[]) | @csv"
给出输出
"time","ppm","T"
"2019-01-17T19:45:00Z",864.5,18.54
"2019-01-17T19:50:00Z",861.4,18.545
"2019-01-17T19:55:00Z",866.2,18.5
"2019-01-17T20:00:00Z",863.9,18.47
之所以有效,是因为:
(.results[0].series[0].columns) 获取列名作为数组, 连接输出(.results[0].series[0].values[]) 将数据值作为数组获取| @csv 使用 jq csv 格式化程序-r 用于获取原始输出更多资源:
【讨论】:
surya rahul 发布的答案对我有用,但有小幅修正。
原文:influx -database 'database_name' -execute 'SELECT * FROM table_name' -format csv > test.csv。
该命令返回了一个错误“错误解析查询:无效持续时间”
但是。在查询部分使用双引号 " " 而不是单引号 ' ' 的简单修改解决了这个问题。 修改:influx -database 'database_name' -execute "SELECT * FROM table_name" -format csv > test.csv。
作为新手,不确定它是如何工作的,但它确实有效。希望对您有所帮助。
【讨论】:
其他答案中解释了 CLI 方式。我使用了 HTTP-API 方式:
curl -G 'http://localhost:8086/query' --data-urlencode "db=mydb" --data-urlencode "q=SELECT * FROM \"mymeasurement\" " -H "Accept: application/csv" > mytargetcsv.csv
database = mydb
measurement/table = mymeasurement
CSV-File = mytargetcsv
您也可以在远程机器上使用它并将查询切割成时间片(标题:内存使用情况):
"q=SELECT * FROM \"mymeasurement\" where time > now() - 130d"
"q=SELECT * FROM \"mymeasurement\" where (time < now() - 130d) and (time > now() - 260d)"
【讨论】:
只需选择行 -> 右键单击 -> 导出所选 -> 选择所需的格式
【讨论】: