Merge pull request #6216 from influxdata/jts-6215-admin-tables

feat(influxdb3): admin table guides for core and ent
pull/6217/head
Jason Stirnaman 2025-07-11 08:36:06 -05:00 committed by GitHub
commit 867324d1b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 654 additions and 0 deletions

View File

@ -0,0 +1,21 @@
---
title: Manage tables
seotitle: Manage tables in {{< product-name >}}
description: >
Tables in {{< product-name >}} are synonymous with measurements and contain
time series data. Each table has a defined schema with tag and field columns.
menu:
influxdb3_core:
parent: Administer InfluxDB
weight: 102
influxdb3/core/tags: [tables]
related:
- /influxdb3/core/write-data/best-practices/schema-design/
- /influxdb3/core/reference/cli/influxdb3/
- /influxdb3/core/reference/naming-restrictions/
source: /shared/influxdb3-admin/tables/_index.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/_index.md
-->

View File

@ -0,0 +1,35 @@
---
title: Create a table
description: >
Use the [`influxdb3 create table` command](/influxdb3/core/reference/cli/influxdb3/create/table/)
or the [HTTP API](/influxdb3/core/api/v3/) to create a new table in a specified database in InfluxDB 3 Core.
Provide the database name, table name, and tag columns.
menu:
influxdb3_core:
parent: Manage tables
weight: 201
list_code_example: |
```sh
# CLI
influxdb3 create table \
--tags tag1,tag2,tag3 \
--database <DATABASE_NAME> \
--token <AUTH_TOKEN> \
<TABLE_NAME>
# HTTP API
curl -X POST "http://localhost:8181/api/v3/configure/table" \
--header "Authorization: Bearer <AUTH_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"db": "<DATABASE_NAME>", "table": "<TABLE_NAME>", "tags": ["tag1", "tag2", "tag3"]}'
```
related:
- /influxdb3/core/reference/cli/influxdb3/create/table/
- /influxdb3/core/reference/naming-restrictions/
- /influxdb3/core/api/v3/
source: /shared/influxdb3-admin/tables/create.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/create.md
-->

View File

@ -0,0 +1,31 @@
---
title: Delete a table
description: >
Use the [`influxdb3 delete table` command](/influxdb3/core/reference/cli/influxdb3/delete/table/)
or the [HTTP API](/influxdb3/core/api/v3/) to delete a table from a specified database in {{< product-name >}}.
Supports both soft delete and hard delete operations.
menu:
influxdb3_core:
parent: Manage tables
weight: 203
list_code_example: |
```sh
# CLI
influxdb3 delete table \
--database <DATABASE_NAME> \
--token <AUTH_TOKEN> \
<TABLE_NAME>
# HTTP API
curl -X DELETE "http://localhost:8181/api/v3/configure/table?db=<DATABASE_NAME>&table=<TABLE_NAME>" \
--header "Authorization: Bearer <AUTH_TOKEN>"
```
related:
- /influxdb3/core/reference/cli/influxdb3/delete/table/
- /influxdb3/core/api/v3/
source: /shared/influxdb3-admin/tables/delete.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/delete.md
-->

View File

@ -0,0 +1,33 @@
---
title: List tables
description: >
Use the [`influxdb3 query` command](/influxdb3/core/reference/cli/influxdb3/query/)
or the [HTTP API](/influxdb3/core/api/v3/) to list tables in a specified database in {{< product-name >}}.
Use SQL SHOW TABLES or InfluxQL SHOW MEASUREMENTS statements.
menu:
influxdb3_core:
parent: Manage tables
weight: 202
list_code_example: |
```sh
# CLI
influxdb3 query \
--database <DATABASE_NAME> \
--token <AUTH_TOKEN> \
"SHOW TABLES"
# HTTP API
curl --get "http://localhost:8181/api/v3/query_sql" \
--header "Authorization: Bearer <AUTH_TOKEN>" \
--data-urlencode "db=<DATABASE_NAME>" \
--data-urlencode "q=SHOW TABLES"
```
related:
- /influxdb3/core/reference/cli/influxdb3/query/
- /influxdb3/core/api/v3/
source: /shared/influxdb3-admin/tables/list.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/list.md
-->

View File

@ -0,0 +1,21 @@
---
title: Manage tables
seotitle: Manage tables in {{< product-name >}}
description: >
Tables in {{< product-name >}} are synonymous with measurements and contain
time series data. Each table has a defined schema with tag and field columns.
menu:
influxdb3_enterprise:
parent: Administer InfluxDB
weight: 102
influxdb3/enterprise/tags: [tables]
related:
- /influxdb3/enterprise/write-data/best-practices/schema-design/
- /influxdb3/enterprise/reference/cli/influxdb3/
- /influxdb3/enterprise/reference/naming-restrictions/
source: /shared/influxdb3-admin/tables/_index.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/_index.md
-->

View File

@ -0,0 +1,35 @@
---
title: Create a table
description: >
Use the [`influxdb3 create table` command](/influxdb3/enterprise/reference/cli/influxdb3/create/table/)
or the [HTTP API](/influxdb3/enterprise/api/v3/) to create a new table in a specified database
in InfluxDB 3 Enterprise. Provide the database name, table name, and tag columns.
menu:
influxdb3_enterprise:
parent: Manage tables
weight: 201
list_code_example: |
```sh
# CLI
influxdb3 create table \
--tags tag1,tag2,tag3 \
--database <DATABASE_NAME> \
--token <AUTH_TOKEN> \
<TABLE_NAME>
# HTTP API
curl -X POST "http://localhost:8181/api/v3/configure/table" \
--header "Authorization: Bearer <AUTH_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"db": "<DATABASE_NAME>", "table": "<TABLE_NAME>", "tags": ["tag1", "tag2", "tag3"]}'
```
related:
- /influxdb3/enterprise/reference/cli/influxdb3/create/table/
- /influxdb3/enterprise/reference/naming-restrictions/
- /influxdb3/enterprise/api/v3/
source: /shared/influxdb3-admin/tables/create.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/create.md
-->

View File

@ -0,0 +1,31 @@
---
title: Delete a table
description: >
Use the [`influxdb3 delete table` command](/influxdb3/enterprise/reference/cli/influxdb3/delete/table/)
or the [HTTP API](/influxdb3/enterprise/api/v3/) to delete a table from a specified database in InfluxDB 3 Enterprise.
Supports both soft delete and hard delete operations.
menu:
influxdb3_enterprise:
parent: Manage tables
weight: 203
list_code_example: |
```sh
# CLI
influxdb3 delete table \
--database <DATABASE_NAME> \
--token <AUTH_TOKEN> \
<TABLE_NAME>
# HTTP API
curl -X DELETE "http://localhost:8181/api/v3/configure/table?db=<DATABASE_NAME>&table=<TABLE_NAME>" \
--header "Authorization: Bearer <AUTH_TOKEN>"
```
related:
- /influxdb3/enterprise/reference/cli/influxdb3/delete/table/
- /influxdb3/enterprise/api/v3/
source: /shared/influxdb3-admin/tables/delete.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/delete.md
-->

View File

@ -0,0 +1,33 @@
---
title: List tables
description: >
Use the [`influxdb3 query` command](/influxdb3/enterprise/reference/cli/influxdb3/query/)
or the [HTTP API](/influxdb3/enterprise/api/v3/) to list tables in a specified database in {{% product-name %}}.
Use SQL SHOW TABLES or InfluxQL SHOW MEASUREMENTS statements.
menu:
influxdb3_enterprise:
parent: Manage tables
weight: 202
list_code_example: |
```sh
# CLI
influxdb3 query \
--database <DATABASE_NAME> \
--token <AUTH_TOKEN> \
"SHOW TABLES"
# HTTP API
curl --get "http://localhost:8181/api/v3/query_sql" \
--header "Authorization: Bearer <AUTH_TOKEN>" \
--data-urlencode "db=<DATABASE_NAME>" \
--data-urlencode "q=SHOW TABLES"
```
related:
- /influxdb3/enterprise/reference/cli/influxdb3/query/
- /influxdb3/enterprise/api/v3/
source: /shared/influxdb3-admin/tables/list.md
---
<!--
//SOURCE content/shared/influxdb3-admin/tables/list.md
-->

View File

@ -0,0 +1,6 @@
Tables are synonymous with measurements in {{< product-name >}}.
They are typically created automatically when you write line protocol data,
but you can also manually create them to define custom schemas or apply settings.
before writing data.
{{< children >}}

View File

@ -0,0 +1,171 @@
Use the [`influxdb3 create table` command](/influxdb3/version/reference/cli/influxdb3/create/table/)
or the [HTTP API](/influxdb3/version/api/v3/) to create a table in a specified database in {{< product-name >}}.
With {{< product-name >}}, tables and measurements are synonymous.
Typically, tables are created automatically on write using the table name
specified in line protocol written to InfluxDB.
However, you can manually create tables to define a custom schema or apply custom settings before writing data.
- [Create a table using the influxdb3 CLI](#create-a-table-using-the-influxdb3-cli)
- [Create a table using the HTTP API](#create-a-table-using-the-http-api)
- [Table naming restrictions](#table-naming-restrictions)
## Create a table using the influxdb3 CLI
1. If you haven't already, [download and install the `influxdb3` CLI](/influxdb3/version/reference/cli/influxdb3/#download-and-install-the-influxdb3-cli).
2. Run the `influxdb3 create table` command and provide the following:
- _Required_: The name of the database to create the table in
- _Required_: The name of the table to create (see [Table naming restrictions](#table-naming-restrictions))
- _Required_: Tag columns to include in the table (must have at least one tag column)
- _Optional_: Field columns and their data types to include in the table
{{% show-in "enterprise" %}}
- _Optional_: A retention period for the table
{{% /show-in %}}
> [!Note]
> Tables must include at least one tag column.
> Field columns are optional and can be added later when you write data.
> [!Important]
> #### Tag order affects query performance
> When considering your schema and creating your table, order your tags by query priority.
> Place the most commonly queried tags first.
> Columns that appear earlier are typically faster to filter and access during query execution.
>
> For more information, see [Optimize writes](/influxdb3/version/write-data/best-practices/optimize-writes/#sort-tags-by-query-priority).
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```bash
influxdb3 create table \
--tags tag1,tag2,tag3 \
--database DATABASE_NAME \
--token AUTH_TOKEN \
TABLE_NAME
```
{{% /code-placeholders %}}
Replace the following:
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the database to create the table in
- {{% code-placeholder-key %}}`TABLE_NAME`{{% /code-placeholder-key %}}: the name of the table to create
- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: your {{% token-link "admin" %}}
### Create a table with field columns
To define specific field columns and their data types when creating the table, use the `--fields` flag:
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```sh
influxdb3 create table \
--tags room,sensor_id \
--fields temp:float64,hum:float64,co:int64 \
--database DATABASE_NAME \
--token AUTH_TOKEN \
TABLE_NAME
```
{{% /code-placeholders %}}
{{% show-in "enterprise" %}}
### Create a table with a retention period
To set a specific retention period for the table, use the `--retention-period` flag:
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```sh
influxdb3 create table \
--tags room,sensor_id \
--fields temp:float64,hum:float64 \
--retention-period 7d \
--database DATABASE_NAME \
--token AUTH_TOKEN \
TABLE_NAME
```
{{% /code-placeholders %}}
{{% /show-in %}}
## Create a table using the HTTP API
To create a table using the HTTP API, send a `POST` request to the `/api/v3/configure/table` endpoint:
{{% api-endpoint method="POST" endpoint="{{< influxdb/host >}}/api/v3/configure/table" %}}
Include the following in your request:
- **Headers**:
- `Authorization: Bearer` with your authentication token
- `Content-Type: application/json`
- **Request body**: JSON object with table configuration
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```bash
curl -X POST "http://{{< influxdb/host >}}/api/v3/configure/table" \
--header "Authorization: Bearer AUTH_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"db": "DATABASE_NAME",
"table": "TABLE_NAME",
"tags": ["tag1", "tag2", "tag3"]
}'
```
{{% /code-placeholders %}}
### Create a table with field columns using the API
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```bash
curl -X POST "{{< influxdb/host >}}/api/v3/configure/table" \
--header "Authorization: Bearer AUTH_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"db": "DATABASE_NAME",
"table": "TABLE_NAME",
"tags": ["room", "sensor_id"],
"fields": [
{"name": "temp", "type": "float64"},
{"name": "hum", "type": "float64"},
{"name": "co", "type": "int64"}
]
}'
```
{{% /code-placeholders %}}
{{% show-in "enterprise" %}}
### Create a table with a retention period using the API
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```bash
curl -X POST "{{< influxdb/host >}}/api/v3/configure/table" \
--header "Authorization: Bearer AUTH_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"db": "DATABASE_NAME",
"table": "TABLE_NAME",
"tags": ["room", "sensor_id"],
"fields": [
{"name": "temp", "type": "float64"},
{"name": "hum", "type": "float64"}
],
"retention_period": "7d"
}'
```
{{% /code-placeholders %}}
{{% /show-in %}}
## Table naming restrictions
Table names in {{< product-name >}} must adhere to the following naming restrictions:
- **Allowed characters**: Alphanumeric characters (a-z, A-Z, 0-9), underscore (`_`), dash (`-`)
- **Starting character**: Should start with a letter or number and should not start with underscore (`_`)
- **Case sensitivity**: Table names are case-sensitive
- **Quoting**: Use double quotes when names contain special characters or whitespace
> [!Caution]
> #### Underscore prefix reserved for system use
>
> Names starting with an underscore (`_`) may be reserved for InfluxDB system use.
> While {{< product-name >}} might not explicitly reject these names, using them risks
> conflicts with current or future system features and may result in
> unexpected behavior or data loss.

View File

@ -0,0 +1,119 @@
Use the [`influxdb3 delete table` command](/influxdb3/version/reference/cli/influxdb3/delete/table/)
or the [HTTP API](/influxdb3/version/api/v3/) to delete a table from a specified database in {{< product-name >}}.
With {{< product-name >}}, tables and measurements are synonymous.
By default, {{< product-name >}} performs a soft delete, which schedules the table for deletion and makes it unavailable for querying.
You can also schedule a hard deletion to permanently remove the table and its data.
> [!Caution]
> #### Deleting a table cannot be undone
>
> Deleting a table is a destructive action.
> Once a table is deleted, data stored in that table cannot be recovered.
- [Delete a table using the influxdb3 CLI](#delete-a-table-using-the-influxdb3-cli)
- [Delete a table using the HTTP API](#delete-a-table-using-the-http-api)
## Delete a table using the influxdb3 CLI
1. If you haven't already, [download and install the `influxdb3` CLI](/influxdb3/version/reference/cli/influxdb3/#download-and-install-the-influxdb3-cli).
2. Use the `influxdb3 delete table` command to delete a table:
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```sh
influxdb3 delete table \
--database DATABASE_NAME \
--token AUTH_TOKEN \
TABLE_NAME
```
{{% /code-placeholders %}}
Replace the following:
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the database containing the table
- {{% code-placeholder-key %}}`TABLE_NAME`{{% /code-placeholder-key %}}: the name of the table to delete
- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: your {{% token-link "admin" %}}
### Hard delete a table immediately
To permanently delete a table and its data immediately, use the `--hard-delete now` flag:
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```sh
influxdb3 delete table \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--hard-delete now \
TABLE_NAME
```
{{% /code-placeholders %}}
### Schedule a hard deletion
To schedule a table for hard deletion at a specific time, use the `--hard-delete` flag with a timestamp:
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```sh
influxdb3 delete table \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--hard-delete "2025-12-31T23:59:59Z" \
TABLE_NAME
```
{{% /code-placeholders %}}
## Delete a table using the HTTP API
To delete a table using the HTTP API, send a `DELETE` request to the `/api/v3/configure/table` endpoint:
{{% api-endpoint method="DELETE" endpoint="{{< influxdb/host >}}/api/v3/configure/table" %}}
Include the following in your request:
- **Query parameters**:
- `db`: Database name
- `table`: Table name to delete
- `hard_delete_at`: _(Optional)_ Timestamp for hard deletion
- **Headers**:
- `Authorization: Bearer` with your authentication token
### Soft delete a table
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```bash
curl -X DELETE "{{< influxdb/host >}}/api/v3/configure/table?db=DATABASE_NAME&table=TABLE_NAME" \
--header "Authorization: Bearer AUTH_TOKEN"
```
{{% /code-placeholders %}}
Replace the following:
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the database containing the table
- {{% code-placeholder-key %}}`TABLE_NAME`{{% /code-placeholder-key %}}: the name of the table to delete
- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: your {{% token-link "admin" %}}
### Schedule a hard deletion
To schedule a hard deletion at a specific time, include the `hard_delete_at` parameter with an ISO 8601 timestamp:
{{% code-placeholders "DATABASE_NAME|TABLE_NAME|AUTH_TOKEN" %}}
```bash
curl -X DELETE "{{< influxdb/host >}}/api/v3/configure/table?db=DATABASE_NAME&table=TABLE_NAME&hard_delete_at=2025-12-31T23:59:59Z" \
--header "Authorization: Bearer AUTH_TOKEN"
```
{{% /code-placeholders %}}
### Response
A successful deletion returns HTTP status `200` with no content body.
#### Example error response
If the table doesn't exist, the API returns HTTP status `404`:
```json
{
"error": "Table not found"
}
```

View File

@ -0,0 +1,118 @@
Use the [`influxdb3 query` command](/influxdb3/version/reference/cli/influxdb3/query/)
or the [HTTP API](/influxdb3/version/api/v3/) to list tables in a specified database in {{< product-name >}}.
With {{< product-name >}}, tables and measurements are synonymous.
This guide shows how to retrieve a list of all tables (measurements) in a database.
- [List tables using the influxdb3 CLI](#list-tables-using-the-influxdb3-cli)
- [List tables using the HTTP API](#list-tables-using-the-http-api)
## List tables using the influxdb3 CLI
1. If you haven't already, [download and install the `influxdb3` CLI](/influxdb3/version/reference/cli/influxdb3/#download-and-install-the-influxdb3-cli).
2. Use the `influxdb3 query` command with the `SHOW TABLES` SQL statement:
{{% code-placeholders "DATABASE_NAME|AUTH_TOKEN" %}}
```sh
influxdb3 query \
--database DATABASE_NAME \
--token AUTH_TOKEN \
"SHOW TABLES"
```
{{% /code-placeholders %}}
Replace the following:
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the database to list tables from
- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: your {{% token-link "admin" %}}
### Example output
```
+---------------+---------------+------------+------------+
| table_catalog | table_schema | table_name | table_type |
+---------------+---------------+------------+------------+
| public | iox | home | BASE TABLE |
| public | iox | sensors | BASE TABLE |
+---------------+---------------+------------+------------+
```
### Alternative: List tables using InfluxQL
You can also use InfluxQL syntax to list measurements (tables):
{{% code-placeholders "DATABASE_NAME|AUTH_TOKEN" %}}
```sh
influxdb3 query \
--language influxql \
--database DATABASE_NAME \
--token AUTH_TOKEN \
"SHOW MEASUREMENTS"
```
{{% /code-placeholders %}}
## List tables using the HTTP API
To list tables using the HTTP API, send a `GET` request to the `/api/v3/query_sql` endpoint with a `SHOW TABLES` query:
{{% api-endpoint method="GET" endpoint="{{< influxdb/host >}}/api/v3/query_sql" %}}
Include the following in your request:
- **Query parameters**:
- `db`: Database name
- `q`: The SQL query (`SHOW TABLES`)
- `format`: Response format (optional, defaults to `json`)
- **Headers**:
- `Authorization: Bearer` with your authentication token
{{% code-placeholders "DATABASE_NAME|AUTH_TOKEN" %}}
```bash
curl --get "{{< influxdb/host >}}/api/v3/query_sql" \
--header "Authorization: Bearer AUTH_TOKEN" \
--data-urlencode "db=DATABASE_NAME" \
--data-urlencode "q=SHOW TABLES" \
--data-urlencode "format=json"
```
{{% /code-placeholders %}}
Replace the following:
- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the name of the database to list tables from
- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: your {{% token-link "admin" %}}
### Example response
```json
{
"results": [
{
"series": [
{
"name": "tables",
"columns": ["table_catalog", "table_schema", "table_name", "table_type"],
"values": [
["public", "iox", "home", "BASE TABLE"],
["public", "iox", "sensors", "BASE TABLE"]
]
}
]
}
]
}
```
### Get response in CSV format
To get the response in CSV format, set the `format` parameter to `csv`:
{{% code-placeholders "DATABASE_NAME|AUTH_TOKEN" %}}
```bash
curl --get "{{< influxdb/host >}}/api/v3/query_sql" \
--header "Authorization: Bearer AUTH_TOKEN" \
--data-urlencode "db=DATABASE_NAME" \
--data-urlencode "q=SHOW TABLES" \
--data-urlencode "format=csv"
```
{{% /code-placeholders %}}