Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ greptime cli data export [OPTIONS]
| `--addr` | 是 | - | 要连接的 GreptimeDB 数据库地址 |
| `--output-dir` | 是 | - | 存储导出数据的目录 |
| `--database` | 否 | 所有数据库 | 要导出的数据库名称 |
| `--export-jobs, -j` | 否 | 1 | 并行导出任务数量(多个数据库可以并行导出) |
| `--db-parallelism, -j` | 否 | 1 | 并行导出的数据库数量。例如,有 20 个数据库且 `db-parallelism` 设置为 4 时,将同时导出 4 个数据库。(别名:`--export-jobs`) |
| `--table-parallelism` | 否 | 4 | 单个数据库内并行导出的表数量。例如,数据库包含 30 个表且 `table-parallelism` 设置为 8 时,将同时导出 8 个表。 |
| `--max-retry` | 否 | 3 | 每个任务的最大重试次数 |
| `--target, -t` | 否 | all | 导出目标(schema/data/all) |
| `--start-time` | 否 | - | 数据导出的开始时间范围 |
Expand Down Expand Up @@ -56,15 +57,15 @@ greptime cli data import [OPTIONS]
```

### 选项
| 选项 | 是否必需 | 默认值 | 描述 |
| ------------------- | -------- | ---------- | ------------------------------------------ |
| `--addr` | 是 | - | 要连接的 GreptimeDB 数据库地址 |
| `--input-dir` | 是 | - | 包含备份数据的目录 |
| `--database` | 否 | 所有数据库 | 要导入的数据库名称 |
| `--import-jobs, -j` | 否 | 1 | 并行导入任务数量(多个数据库可以并行导入) |
| `--max-retry` | 否 | 3 | 每个任务的最大重试次数 |
| `--target, -t` | 否 | all | 导入目标(schema/data/all) |
| `--auth-basic` | 否 | - | 使用 `<username>:<password>` 格式 |
| 选项 | 是否必需 | 默认值 | 描述 |
| ------------------------ | -------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--addr` | 是 | - | 要连接的 GreptimeDB 数据库地址 |
| `--input-dir` | 是 | - | 包含备份数据的目录 |
| `--database` | 否 | 所有数据库 | 要导入的数据库名称 |
| `--db-parallelism, -j` | 否 | 1 | 并行导入的数据库数量。例如,有 20 个数据库且 `db-parallelism` 设置为 4 时,将同时导入 4 个数据库。(别名:`--import-jobs`) |
| `--max-retry` | 否 | 3 | 每个任务的最大重试次数 |
| `--target, -t` | 否 | all | 导入目标(schema/data/all) |
| `--auth-basic` | 否 | - | 使用 `<username>:<password>` 格式 |

### 导入目标
- `schema`: 仅导入表结构
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,29 @@ is_strict_mode = false

有关更多信息,请参阅[如何文档](https://github.com/GreptimeTeam/greptimedb/blob/main/docs/how-to/how-to-change-log-level-on-the-fly.md)。

### 启用/禁用链路追踪

- **路径**: `/debug/enable_trace`
- **方法**: `POST`
- **描述**: 在运行时动态启用或禁用分布式链路追踪。
- **用法**: 发送 `true` 启用链路追踪,或发送 `false` 禁用链路追踪。

启用链路追踪示例:

```bash
curl --data "true" http://127.0.0.1:4000/debug/enable_trace
# 输出: trace enabled
```

禁用链路追踪示例:

```bash
curl --data "false" http://127.0.0.1:4000/debug/enable_trace
# 输出: trace disabled
```

有关链路追踪配置的更多信息,请参阅[链路追踪文档](/user-guide/deployments-administration/monitoring/tracing.md)。

### 性能分析工具

- **基础路径**: `/debug/prof/`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ ALTER DATABASE db
- 如果之前未设置 ttl,通过 `ALTER` 设置新的 ttl 后,超过保留时间的数据将被删除。
- 如果之前已设置过 ttl,通过 `ALTER` 修改 ttl 后,新的保留时间将立即生效,超过新保留时间的数据将被删除。
- 如果之前已设置过 ttl,通过 `ALTER` 取消 ttl 设置后,新增的数据将不会被删除,但已被删除的数据无法恢复。
- `compaction.twcs.time_window`: TWCS 压缩策略的时间窗口参数。值应该是一个[时间长度字符串](/reference/time-durations.md)。
- `compaction.twcs.max_output_file_size`: TWCS 压缩策略的最大允许输出文件大小。
- `compaction.twcs.trigger_file_num`: 触发压缩的特定时间窗口中的文件数。

### 示例

Expand All @@ -49,6 +52,32 @@ ALTER DATABASE db SET 'ttl'='1d';
ALTER DATABASE db UNSET 'ttl';
```

#### 修改数据库的压缩选项

修改数据库的压缩时间窗口:

```sql
ALTER DATABASE db SET 'compaction.twcs.time_window'='2h';
```

修改压缩的最大输出文件大小:

```sql
ALTER DATABASE db SET 'compaction.twcs.max_output_file_size'='500MB';
```

修改触发压缩的文件数:

```sql
ALTER DATABASE db SET 'compaction.twcs.trigger_file_num'='8';
```

取消压缩选项:

```sql
ALTER DATABASE db UNSET 'compaction.twcs.time_window';
```

## ALTER TABLE

## 语法
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,19 @@ COPY tbl TO '/path/to/file.csv' WITH (
);
```

也可以将数据导出为压缩的 CSV 或 JSON 文件:

```sql
COPY tbl TO '/path/to/file.csv.gz' WITH (
FORMAT = 'csv',
compression_type = 'gzip'
);
```

:::tip NOTE
使用压缩时,请确保文件扩展名与压缩类型匹配:gzip 使用 `.gz`,zstd 使用 `.zst`,bzip2 使用 `.bz2`,xz 使用 `.xz`。
:::

#### `WITH` 选项

`WITH` 可以添加一些选项,比如文件的 `FORMAT` 用来指定导出文件的格式。本例中的格式为 Parquet,它是一种用于大数据处理的列式存储格式。Parquet 为大数据分析高效地压缩和编码列式数据。
Expand All @@ -35,6 +48,7 @@ COPY tbl TO '/path/to/file.csv' WITH (
|---|---|---|
| `FORMAT` | 目标文件格式,例如 JSON, CSV, Parquet | **是** |
| `START_TIME`/`END_TIME`| 需要导出数据的时间范围,时间范围为左闭右开 | 可选 |
| `compression_type` | 导出文件的压缩算法。支持的值:`gzip`、`zstd`、`bzip2`、`xz`。仅支持 CSV 和 JSON 格式。 | 可选 |
| `TIMESTAMP_FORMAT` | 导出 CSV 格式时自定义时间戳列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符(例如 `'%Y-%m-%d %H:%M:%S'`)。仅支持 CSV 格式。 | 可选 |
| `DATE_FORMAT` | 导出 CSV 格式时自定义日期列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符(例如 `'%Y-%m-%d'`)。仅支持 CSV 格式。 | 可选 |
| `TIME_FORMAT` | 导出 CSV 格式时自定义时间列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符(例如 `'%H:%M:%S'`)。仅支持 CSV 格式。 | 可选 |
Expand Down Expand Up @@ -78,10 +92,20 @@ COPY tbl FROM '/path/to/folder/' WITH (FORMAT = 'parquet', PATTERN = '.*parquet.
COPY tbl FROM '/path/to/folder/xxx.parquet' WITH (FORMAT = 'parquet');
```

也可以从压缩的 CSV 或 JSON 文件导入数据:

```sql
COPY tbl FROM '/path/to/file.csv.gz' WITH (
FORMAT = 'csv',
compression_type = 'gzip'
);
```

| 选项 | 描述 | 是否必需 |
|---|---|---|
| `FORMAT` | 目标文件格式,例如 JSON, CSV, Parquet, ORC | **是** |
| `PATTERN` | 使用正则匹配文件,例如 `*_today.parquet` | 可选 |
| `compression_type` | 导入文件的压缩算法。支持的值:`gzip`、`zstd`、`bzip2`、`xz`。仅支持 CSV 和 JSON 格式。 | 可选 |

:::tip NOTE
CSV 文件必须带有 header,包含表的列名。
Expand Down Expand Up @@ -151,6 +175,7 @@ COPY (<QUERY>) TO '<PATH>' WITH (FORMAT = { 'CSV' | 'JSON' | 'PARQUET' });
| `QUERY` | 要执行的 SQL SELECT 语句 | **是** |
| `PATH` | 输出文件的路径 | **是** |
| `FORMAT` | 输出文件格式:'CSV'、'JSON' 或 'PARQUET' | **是** |
| `compression_type` | 导出文件的压缩算法。支持的值:`gzip`、`zstd`、`bzip2`、`xz`。仅支持 CSV 和 JSON 格式。 | 可选 |
| `TIMESTAMP_FORMAT` | 导出 CSV 格式时自定义时间戳列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符。仅支持 CSV 格式。 | 可选 |
| `DATE_FORMAT` | 导出 CSV 格式时自定义日期列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符。仅支持 CSV 格式。 | 可选 |
| `TIME_FORMAT` | 导出 CSV 格式时自定义时间列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符。仅支持 CSV 格式。 | 可选 |
Expand All @@ -161,6 +186,15 @@ COPY (<QUERY>) TO '<PATH>' WITH (FORMAT = { 'CSV' | 'JSON' | 'PARQUET' });
COPY (SELECT * FROM tbl WHERE host = 'host1') TO '/path/to/file.csv' WITH (FORMAT = 'csv');
```

也可以将查询结果导出为压缩文件:

```sql
COPY (SELECT * FROM tbl WHERE host = 'host1') TO '/path/to/file.json.gz' WITH (
FORMAT = 'json',
compression_type = 'gzip'
);
```

也可以在导出到 CSV 时指定自定义日期和时间格式:

```sql
Expand All @@ -176,13 +210,14 @@ COPY (SELECT * FROM tbl WHERE host = 'host1') TO '/path/to/file.csv' WITH (
`COPY` 语句除可以导入/导出表之外,也可以导入/导出指定的数据库,其语法如下:

```sql
COPY DATABASE <db_name>
[TO | FROM] '<PATH>'
COPY DATABASE <db_name>
[TO | FROM] '<PATH>'
WITH (
FORMAT = { 'CSV' | 'JSON' | 'PARQUET' }
FORMAT = { 'CSV' | 'JSON' | 'PARQUET' }
START_TIME = "<START TIMESTAMP>",
END_TIME = "<END TIMESTAMP>"
)
END_TIME = "<END TIMESTAMP>",
PARALLELISM = <number>
)
[CONNECTION(
REGION = "<REGION NAME>",
ENDPOINT = "<ENDPOINT>",
Expand All @@ -196,6 +231,7 @@ COPY DATABASE <db_name>
|---|---|---|
| `FORMAT` | 目标文件格式,例如 JSON, CSV, Parquet | **是** |
| `START_TIME`/`END_TIME`| 需要导出数据的时间范围,时间范围为左闭右开 | 可选 |
| `PARALLELISM` | 并行处理的表数量。例如,数据库包含 30 个表且 `PARALLELISM` 设置为 8 时,将同时处理 8 个表。默认值为 CPU 核心总数,最小值为 1。 | 可选 |

> - 当导入/导出表时,`<PATH>` 参数必须以 `/` 结尾;
> - COPY DATABASE 同样可以通过 `CONNECTION` 参数将数据导入/导出的路径指向 S3 等对象存储
Expand All @@ -207,11 +243,17 @@ COPY DATABASE <db_name>
-- 将 public 数据库中所有数据导出到 /tmp/export/ 目录下
COPY DATABASE public TO '/tmp/export/' WITH (FORMAT='parquet');

-- 使用 4 个并行操作导出所有表数据
COPY DATABASE public TO '/tmp/export/' WITH (FORMAT='parquet', PARALLELISM=4);

-- 将 public 数据库中时间范围在 2022-04-11 08:00:00 到 2022-04-11 09:00:00 之间的数据导出到 /tmp/export/ 目录下
COPY DATABASE public TO '/tmp/export/' WITH (FORMAT='parquet', START_TIME='2022-04-11 08:00:00', END_TIME='2022-04-11 09:00:00');

-- 从 /tmp/export/ 目录恢复 public 数据库的数据
COPY DATABASE public FROM '/tmp/export/' WITH (FORMAT='parquet');

-- 使用 8 个并行操作导入数据
COPY DATABASE public FROM '/tmp/export/' WITH (FORMAT='parquet', PARALLELISM=8);
```

## Windows 平台上的路径
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ SQL 数据类型定义了列可以存储的数据类型。当您运行 `DESC TAB
| `Float32` | 32 位 IEEE 754 浮点数 | 4 字节 |
| `Float64` | 双精度 IEEE 754 浮点数 | 8 字节 |

:::tip 注意
这里的描述指的是 GreptimeDB 原生类型信息,这些类型都是以 位(bits) 为单位的。但是,在使用 SQL 时,请遵循 PostgreSQL 和 MySQL 的惯例,其中 `INT2`、`INT4`、`INT8`、`FLOAT4` 和 `FLOAT8` 等类型都是以 字节(bytes) 为单位定义的。
例如,在 SQL 语句中,`INT8` 实际上对应 `BigInt`(8 个字节,64 位)。
:::

## Decimal 类型

GreptimeDB 支持 `decimal` 类型,这是一种定点类型,表示为 `decimal(precision, scale)`,其中 `precision` 是总位数,`scale` 是小数部分的位数。例如,`123.45` 的总位数为 5,小数位数为 2。
Expand Down Expand Up @@ -303,24 +308,37 @@ INSERT INTO bools(b) VALUES (TRUE), (FALSE);

对于从 MySQL 或 PostgreSQL 迁移到 GreptimeDB 的用户,GreptimeDB 支持以下类型别名。

| 数据类型 | 别名 |
| ---------------------- | --------------------------------------------------------------- |
| `String` | `Text`, `TinyText`, `MediumText`, `LongText`, `Varchar`, `Char` |
| `Binary` | `Varbinary` |
| `Int8` | `TinyInt` |
| `Int16` | `SmallInt` |
| `Int32` | `Int` |
| `Int64` | `BigInt` |
| `UInt8` | `UnsignedTinyInt` |
| `UInt16` | `UnsignedSmallInt` |
| `UInt32` | `UnsignedInt` |
| `UInt64` | `UnsignedBigInt` |
| `Float32` | `Float` |
| `Float64` | `Double` |
| `TimestampSecond` | `Timestamp_s`, `Timestamp_sec`, `Timestamp(0)` |
| `TimestampMillisecond` | `Timestamp`, `Timestamp_ms` , `Timestamp(3)` |
| `TimestampMicroSecond` | `Timestamp_us`, `Timestamp(6)` |
| `TimestampNanosecond` | `Timestamp_ns`, `Timestamp(9)` |
| SQL 类型别名 | Native 数据类型 |
| --------------------------------------------------------------- | ---------------------- |
| `Text`, `TinyText`, `MediumText`, `LongText`, `Varchar`, `Char` | `String` |
| `Varbinary` | `Binary` |
| `TinyInt` | `Int8` |
| `SmallInt`, `Int2` | `Int16` |
| `Int`, `Int4` | `Int32` |
| `BigInt`, `Int8` | `Int64` |
| `UnsignedTinyInt` | `UInt8` |
| `UnsignedSmallInt` | `UInt16` |
| `UnsignedInt` | `UInt32` |
| `UnsignedBigInt` | `UInt64` |
| `Float`, `Float4` | `Float32` |
| `Double`, `Float8` | `Float64` |
| `Timestamp_s`, `Timestamp_sec`, `Timestamp(0)` | `TimestampSecond` |
| `Timestamp`, `Timestamp_ms`, `Timestamp(3)` | `TimestampMillisecond` |
| `Timestamp_us`, `Timestamp(6)` | `TimestampMicroSecond` |
| `Timestamp_ns`, `Timestamp(9)` | `TimestampNanosecond` |

:::warning 注意
类型别名 `Int2`、`Int4`、`Int8`、`Float4` 和 `Float8` 遵循 PostgreSQL 和 MySQL 的约定,这些标识符表示类型中的**字节**数(而非位数)。

具体来说:
- `Int2` = 2 字节 = `SmallInt`(16 位)
- `Int4` = 4 字节 = `Int`(32 位)
- `Int8` = 8 字节 = `BigInt`(64 位)
- `Float4` = 4 字节 = `Float`(32 位)
- `Float8` = 8 字节 = `Double`(64 位)

注意:GreptimeDB 的原生类型名称(如 `UInt8`、`Int32`、`Int64`)表示**位**数,而 SQL 类型别名 `Int2`、`Int4` 和 `Int8` 遵循 PostgreSQL/MySQL 约定表示**字节**数。例如,原生类型 `Int8` 是 8 **位**整数(`TinyInt`, 1 字节),而 SQL 别名 `INT8` 映射到 8 **字节**整数(`BigInt`,64 位)。
:::

在创建表时也可以使用这些别名类型。
例如,使用 `Varchar` 代替 `String`,使用 `Double` 代替 `Float64`,使用 `Timestamp(0)` 代替 `TimestampSecond`。
Expand Down
Loading