Influxdb数据/表可以作为csv文件下载吗?

时间:2018-06-09 04:37:26

标签: database csv influxdb

Influxdb是一个时间序列数据库,它将数据及其属性存储在表中,通常称为度量。

flowxdb数据库中的表能否以csv格式提取到本地系统?

6 个答案:

答案 0 :(得分:3)

在CLI中,可以使用以下命令在本地系统上下载表:

influx -database 'database_name' -execute 'SELECT * FROM table_name' -format csv > test.csv

答案 1 :(得分:1)

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)"

https://docs.influxdata.com/influxdb/v1.8/tools/api/

答案 2 :(得分:0)

使用CLI工具influx,您可以为结果设置csv输出格式:

influx -host your_host -port 8086 -database 'your_db' -execute 'select * from your_metric' -format 'csv'
如果在本地InfluxDB主机上运行命令,则可以省略

-host-port选项。 设置时间戳格式也有用-precision选项。

答案 3 :(得分:0)

或者,您可以使用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用于获取原始输出

更多资源:

答案 4 :(得分:0)

surya rahul发布的答案为我工作,但进行了较小的修正

原始涌入-database'database_name'-执行'SELECT * FROM table_name'-format csv> test.csv
此命令向我返回错误 “错误分析查询:持续时间无效”

但是 。在查询部分中使用双引号“” 而不是单''的简单修改解决了此问题。 已修改流入-database'database_name'-执行“ SELECT * FROM table_name” -format csv> test.csv

是新手,不确定它是如何工作的,但是它能工作。希望对您有所帮助。

答案 5 :(得分:-1)

轻松选择行 -> 右键单击​​ -> 导出所选 -> 选择所需的格式