文档文档

使用 influx - InfluxDB 命令行界面

此页面记录了较早版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅 InfluxDB v2 文档

influx 命令行界面 (CLI) 为与 influxd 关联的 HTTP API 提供了一个交互式 shell。 使用 influx 可以写入数据(手动或从文件)、交互式查询数据、以不同格式查看查询输出以及管理 InfluxDB 中的资源。

启动 influx

当您安装 InfluxDB OSS 1.12 时,会包含 influx CLI。

influx CLI 安装在以下路径,具体取决于您的系统和软件包管理器

/usr/bin/influx
/usr/local/bin/influx
/opt/homebrew/opt/influxdb@1/bin/influx

要访问 CLI,请先启动 influxd 数据库进程,然后在终端中启动 influx

influx

如果成功连接到 InfluxDB 节点,则输出如下

Connected to http://localhost:8086 version 1.12.0
InfluxDB shell version: 1.12.0
>

InfluxDB 和 CLI 的版本应相同。 否则,查询可能会出现解析问题。

在提示符下,您可以输入 InfluxQL 查询以及 CLI 特定的命令。 输入 help 以获取可用命令列表。 如果您想取消长时间运行的 InfluxQL 查询,请使用 Ctrl+C 取消。

环境变量

以下环境变量可用于配置 influx 客户端使用的设置。 它们可以用小写或大写指定,但大写版本优先。

HTTP_PROXY

定义用于 HTTP 的代理服务器。

值格式:[protocol://]<host>[:port]

HTTP_PROXY=http://localhost:1234

HTTPS_PROXY

定义用于 HTTPS 的代理服务器。 对于 HTTPS,优先于 HTTP_PROXY。

值格式:[protocol://]<host>[:port]

HTTPS_PROXY=https://localhost:1443

NO_PROXY

不应通过任何代理的主机名列表。 如果仅设置为星号“*”,则匹配所有主机。

值格式: 逗号分隔的主机列表

NO_PROXY=123.45.67.89,123.45.67.90

influx 参数

参数指定 CLI 会话的连接、写入、导入和输出选项。

influx 提供以下参数

-h, -help 列出 influx 参数

-compressed 如果导入文件已压缩,则设置为 true。 与 -import 一起使用。

-consistency 'any|one|quorum|all' 设置写入一致性级别。

-database '数据库名称' influx 连接到的数据库。

-execute '命令' 执行 InfluxQL 命令并退出。 请参阅 -execute

-format 'json|csv|column' 指定服务器响应的格式。 请参阅 -format

-host '主机名' influx 连接到的主机。 默认情况下,InfluxDB 在 localhost 上运行。

-import 从文件导入新数据或导出的数据。 请参阅 -import

-password '密码' influx 用于连接到服务器的密码。 如果您将其留空 (-password ''),influx 将提示您输入密码。 或者,使用 INFLUX_PASSWORD 环境变量为 CLI 设置密码。

-path 要导入的文件的路径。 与-import 一起使用。

-port '端口号' influx 连接到的端口。 默认情况下,InfluxDB 在端口 8086 上运行。

-pps 导入允许的每秒点数。 默认情况下,pps 为零,并且 influx 不会限制导入。 与 -import 一起使用。

-precision 'rfc3339|h|m|s|ms|u|ns' 指定时间戳的格式/精度:rfc3339 (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)、h (小时)、m (分钟)、s (秒)、ms (毫秒)、u (微秒)、ns (纳秒)。 精度默认为纳秒。

注意: 将精度设置为 rfc3339 (-precision rfc3339) 可与 -execute 选项一起使用,但不能与 -import 选项一起使用。 所有其他精度格式(例如,hmsmsuns)都可与 -execute-import 选项一起使用。

-prettyjson 格式启用美化打印。

-ssl 对请求使用 HTTPS。

-unsafeSsl 禁用 SSL 证书验证。 在通过 HTTPS 使用自签名证书连接时使用。

-username '用户名' influx 用于连接到服务器的用户名。 或者,使用 INFLUX_USERNAME 环境变量为 CLI 设置用户名。

-version 显示 InfluxDB 版本并退出。

以下部分提供了某些参数的详细示例,包括 -execute-format-import

使用 -execute 执行 InfluxQL 命令并退出

执行不需要数据库规范的查询

$ influx -execute 'SHOW DATABASES'
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates

执行需要数据库规范的查询,并更改时间戳精度

$ influx -execute 'SELECT * FROM "h2o_feet" LIMIT 3' -database="NOAA_water_database" -precision=rfc3339
name: h2o_feet
--------------
time			               level description	    location	     water_level
2015-08-18T00:00:00Z	 below 3 feet		        santa_monica	 2.064
2015-08-18T00:00:00Z	 between 6 and 9 feet  coyote_creek  8.12
2015-08-18T00:06:00Z	 between 6 and 9 feet  coyote_creek  8.005

使用 -format 指定服务器响应的格式

默认格式为 column

$ influx -format=column
[...]
> SHOW DATABASES
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates

将格式更改为 csv

$ influx -format=csv
[...]
> SHOW DATABASES
name,name
databases,NOAA_water_database
databases,_internal
databases,telegraf
databases,pirates

将格式更改为 json

$ influx -format=json
[...]
> SHOW DATABASES
{"results":[{"series":[{"name":"databases","columns":["name"],"values":[["NOAA_water_database"],["_internal"],["telegraf"],["pirates"]]}]}]}

将格式更改为 json 并启用美化打印

$ influx -format=json -pretty
[...]
> SHOW DATABASES
{
    "results": [
        {
            "series": [
                {
                    "name": "databases",
                    "columns": [
                        "name"
                    ],
                    "values": [
                        [
                            "NOAA_water_database"
                        ],
                        [
                            "_internal"
                        ],
                        [
                            "telegraf"
                        ],
                        [
                            "pirates"
                        ]
                    ]
                }
            ]
        }
    ]
}

从文件导入数据

导入文件有两个部分

  • 可选DDL(数据定义语言):包含用于创建相关InfluxQL 命令和管理保留策略数据库。 如果您的数据库和保留策略已存在,则您的文件可以跳过此部分。
  • DML(数据操作语言):上下文元数据,用于指定导入的数据库和(如果需要)保留策略,并包含 行协议 中的数据。

示例

文件 (datarrr.txt)

# DDL
CREATE DATABASE pirates
CREATE RETENTION POLICY oneday ON pirates DURATION 1d REPLICATION 1

# DML
# CONTEXT-DATABASE: pirates
# CONTEXT-RETENTION-POLICY: oneday

treasures,captain_id=dread_pirate_roberts value=801 1439856000
treasures,captain_id=flint value=29 1439856000
treasures,captain_id=sparrow value=38 1439856000
treasures,captain_id=tetra value=47 1439856000
treasures,captain_id=crunch value=109 1439858880

命令

$influx -import -path=datarrr.txt -precision=s

结果

2015/12/22 12:25:06 Processed 2 commands
2015/12/22 12:25:06 Processed 5 inserts
2015/12/22 12:25:06 Failed 0 inserts

对于大型数据集,influx 每 100,000 个点输出一条状态消息。

例如

2015/08/21 14:48:01 Processed 3100000 lines.
Time elapsed: 56.740578415s.
Points per second (PPS): 54634

关于 -import 的注意事项

  • 要限制导入,请使用 -pps 设置每秒要摄取的点数。 默认情况下,pps 为零,influx 不会限制导入。
  • 要导入使用 gzip (GNU zip) 压缩的文件,请包含 -compressed 标志。
  • 在数据文件中包含时间戳。 如果点不包含时间戳,InfluxDB 会为这些点分配相同的时间戳,这可能会导致意外的重复点或覆盖
  • 如果您的数据文件包含超过 5,000 个点,请考虑将其拆分为较小的文件,以分批将数据写入 InfluxDB。 我们建议以 5,000 到 10,000 个点的批次写入点,以获得最佳性能。 写入较小的批次会增加 HTTP 请求的数量,这可能会对性能产生负面影响。 默认情况下,HTTP 请求在五秒后超时。 尽管 InfluxDB 在超时后会继续尝试写入点,但您不会收到成功写入的确认。

注意: 要从 InfluxDB 版本 0.8.9 导出数据,请参阅 从 0.8.9 导出

有关更多信息,请参阅 导出和导入数据

influx 命令

在 CLI 中输入 help 以获取可用命令的部分列表。

命令

以下列表简要讨论了每个命令。 我们在本节末尾提供了有关 insert 的详细信息。

auth 提示您输入用户名和密码。 influx 在查询数据库时使用这些凭据。 或者,使用 INFLUX_USERNAMEINFLUX_PASSWORD 环境变量为 CLI 设置用户名和密码。

chunked 在发出查询时启用来自服务器的分块响应。 此设置默认启用。

chunk size <size> 设置分块响应的大小。 默认大小为 10,000。 将其设置为 0 会将 chunk size 重置为其默认值。

clear [ database | db | retention policy | rp ] 清除 数据库保留策略 的当前上下文。

connect <host:port> 连接到不同的服务器,而无需退出 shell。 默认情况下,influx 连接到 localhost:8086。 如果您未指定主机或端口,则 influx 假定缺少属性的默认设置。

consistency <level> 设置写入一致性级别:anyonequorumall

Ctrl+C 终止当前正在运行的查询。 当交互式查询花费太长时间响应,因为它试图返回太多数据时很有用。

exit quit Ctrl+D 退出 influx shell。

format <format> 指定服务器响应的格式:jsoncsvcolumn。 有关每种格式的示例,请参阅 -format 的描述。

history 显示您的命令历史记录。 要在 shell 中使用历史记录,只需使用“向上”箭头。 influx 将您最近的 1,000 个命令存储在您主目录的 .influx_history 中。

insert 使用行协议写入数据。 请参阅 insert

precision <format> 指定时间戳的格式/精度:rfc3339 (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)、h (小时)、m (分钟)、s (秒)、ms (毫秒)、u (微秒)、ns (纳秒)。 精度默认为纳秒。

prettyjson 格式启用美化打印。

settings 输出 shell 的当前设置,包括 HostUsernameDatabaseRetention PolicyPretty 状态、Chunked 状态、Chunk SizeFormatWrite Consistency

use [ "<database_name>" | "<database_name>"."<retention policy_name>" ] 设置当前的 数据库 和/或 保留策略。 一旦 influx 设置了当前数据库和/或保留策略,就不需要在查询中指定该数据库和/或保留策略。 如果您未指定保留策略,则 influx 会自动查询 use 的数据库的 DEFAULT 保留策略。

使用 insert 将数据写入 InfluxDB

输入 insert,后跟 行协议 中的数据以将数据写入 InfluxDB。 使用 insert into <retention policy> <line protocol> 将数据写入特定的 保留策略

将数据写入 measurement treasures 中的单个字段,标签为 captain_id = pirate_kinginflux 自动将点写入数据库的 DEFAULT 保留策略。

> INSERT treasures,captain_id=pirate_king value=2
>

将相同的点写入已存在的保留策略 oneday

> INSERT INTO oneday treasures,captain_id=pirate_king value=2
Using retention policy oneday
>

查询

influx 中执行所有 InfluxQL 查询。

有关 InfluxQL 文档,请参阅 数据探索模式探索数据库管理身份验证和授权


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。 更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。 InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、只读副本、增强的安全性以及数据压缩功能,从而实现更快的查询和优化的存储。 InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看