In this post, I will show you a tip to export InfluxDB data to CSV format. You can use the exported sample data for analysis or whatever purpose.
There are two methods to export InfluxDB data to CSV you can use:
- Using client
influx
- Using HTTP API
Let’s walkthrough both of them.
Using client influx
Once you install InfluxDB, you will have access to the binary tool influx
, which is commonly located under the bin
directory. You can confirm the client by issuing the command:
$ influx --version
InfluxDB shell version: 1.9.6
To export InfluxDB data to CSV, use the following command:
$ influx -database DB_NAME -host DB_HOST -username DB_USER -password DB_PASS -execute QUERY -format csv > FILENAME.csv
You should replace DB_NAME
, DB_HOST
, DB_USER
, DB_PASS
, QUERY
and FILENAME
with your input.
If there is no username or password configured on InfluxDB, you can omit them.
In case you access Influx from the local shell, you don’t have to provide -host DB_HOST
, since its default value is already 127.0.0.1
.
This is a sample command you can refer:
$ influx -database serverdata -execute "SELECT * FROM memory_usage" -format csv > memory_usage.csv
Make sure to wrap your QUERY
around the double-quotes.
Using HTTP API
Similarly, the second method leverages the usage HTTP API provided by InfluxDB.
To export InfluxDB to CSV using HTTP API, use the following command, which is done by calling curl
.
$ curl -H 'Accept: application/csv' -G 'http://HOST:PORT/query?db=DATABASE' --data-urlencode 'q=QUERY' > FILE.csv
Replace HOST
, PORT
, DATABASE,
QUERY
and FILE
with your input.
For example:
$ curl -H 'Accept: application/csv' -G 'http://127.0.0.1:8086/query?db=serverdata' --data-urlencode 'q=SELECT * FROM memory_usage'
> memory_usage.csv
If you need to pass some parameters to the query, you can add another params
query data: --data-urlencode 'params={"PARAM":"VALUE"}'
.
For example:
$ curl -H 'Accept: application/csv' -G 'http://127.0.0.1:8086/query?db=serverdata' --data-urlencode 'q=SELECT * FROM memory_usage WHERE os_type=$type' --data-urlencode 'params={"type": "linux"}'
> memory_usage.csv
Conclusion
I’ve shown you two methods to export InfluxDB to CSV file. Both ways are supported clean and work out of the box.
Have fun!