# 数据导出和导入

> 介绍 GreptimeDB 的数据导出和导入工具，用于数据库备份和恢复，包括命令语法、选项。

# 数据导出和导入

数据导出和导入工具提供了备份和恢复 GreptimeDB 数据库的功能。这些工具可以处理表结构和数据，允许进行完整的备份或选择性的备份和恢复操作。

## 导出工具

### 命令语法
```bash
greptime cli data export [OPTIONS]
```

### 选项
| 选项                      | 是否必需 | 默认值     | 描述                                                                                                                                                                                                                                                                       |
| ------------------------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--addr`                  | 是       | -          | 要连接的 GreptimeDB 数据库地址                                                                                                                                                                                                                                             |
| `--output-dir`            | 是       | -          | 存储导出数据的目录。**重要提示**:此路径位于**远程服务器的文件系统**上,而非本地机器。如需在本地获取文件,建议配置远程存储(S3/OSS/GCS/Azure Blob)导出数据,同时使用 `--ddl-local-dir` 将 SQL 文件保存到本地。                                                                                 |
| `--database`              | 否       | 所有数据库 | 要导出的数据库名称                                                                                                                                                                                                                                                         |
| `--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`            | 否       | -          | 数据导出的开始时间范围                                                                                                                                                                                                                                                     |
| `--end-time`              | 否       | -          | 数据导出的结束时间范围                                                                                                                                                                                                                                                     |
| `--auth-basic`            | 否       | -          | 使用 `<username>:<password>` 格式                                                                                                                                                                                                                                          |
| `--timeout`               | 否       | 0          | 对 DB 进行一次调用的超时时间，默认为 0 代表永不超时（例如 `30s`, `10min 20s`）                                                                                                                                                                                             |
| `--proxy`                 | 否       | -          | 代理服务器地址，如设置该参数，将覆盖系统代理。如果未设置 `--proxy` 和 `--no-proxy`，则默认使用系统代理                                                                                                                                                                     |
| `--no-proxy`              | 否       | -          | 禁用代理服务器，如设置该参数，将完全不使用代理                                                                                                                                                                                                                             |
| `--s3`                    | 否       | -          | 是否导出数据到 Amazon S3                                                                                                                                                                                                                                                   |
| `--ddl-local-dir`         | 否       | -          | 当同时设置了 `ddl_local_dir` 和远程存储（如 S3/OSS/GCS/Azure Blob）时，SQL 文件将导出至本地目录，而数据将导出到远程存储。注意：`ddl_local_dir` 只导出 SQL 文件至**本地文件系统**，适用于导出客户端无法直接访问远程存储的情况。如果未设置 `ddl_local_dir`，则 SQL 和数据都将导出至远程存储 |
| `--s3-bucket`             | 是\*     | -          | 当设置了 `--s3` 时，必须指定 S3 的 bucket 名称                                                                                                                                                                                                                             |
| `--s3-root`               | 是\*     | -          | 当设置了 `--s3` 时，必须指定导出在 bucket 中的根路径                                                                                                                                                                                                                       |
| `--s3-endpoint`           | 否\*     | -          | 当设置了 `--s3` 时，需指定 S3 的 endpoint                                                                                                                                                                                                                                  |
| `--s3-access-key`         | 是\*     | -          | 当设置了 `--s3` 时，需指定 S3 的 Access Key                                                                                                                                                                                                                                |
| `--s3-secret-key`         | 是\*     | -          | 当设置了 `--s3` 时，需指定 S3 的 Secret Key                                                                                                                                                                                                                                |
| `--s3-region`             | 是\*     | -          | 当设置了 `--s3` 时，需指定 S3 的区域（Region）                                                                                                                                                                                                                             |
| `--oss`                   | 否       | -          | 是否导出数据到阿里云 OSS                                                                                                                                                                                                                                                   |
| `--oss-bucket`            | 是\*     | -          | 当设置了 `--oss` 时，需指定 OSS 的 bucket 名称                                                                                                                                                                                                                             |
| `--oss-endpoint`          | 否\*     | -          | 当设置了 `--oss` 时，需指定 OSS 的 endpoint                                                                                                                                                                                                                                |
| `--oss-access-key-id`     | 是\*     | -          | 当设置了 `--oss` 时，需指定 OSS 的 Access Key ID                                                                                                                                                                                                                           |
| `--oss-access-key-secret` | 是\*     | -          | 当设置了 `--oss` 时，需指定 OSS 的 Access Key Secret                                                                                                                                                                                                                       |
| `--gcs`                   | 否       | -          | 是否导出数据到 Google Cloud Storage (GCS)                                                                                                                                                                                                                                  |
| `--gcs-bucket`            | 是\*     | -          | 当设置了 `--gcs` 时，必须指定 GCS 的 bucket 名称                                                                                                                                                                                                                           |
| `--gcs-root`              | 是\*     | -          | 当设置了 `--gcs` 时，必须指定导出在 bucket 中的根路径                                                                                                                                                                                                                      |
| `--gcs-scope`             | 否       | -          | GCS 服务范围                                                                                                                                                                                                                                                               |
| `--gcs-credential`        | 否       | -          | GCS 凭证内容                                                                                                                                                                                                                                                               |
| `--gcs-endpoint`          | 否       | -          | GCS 端点 URL                                                                                                                                                                                                                                                               |
| `--azblob`                | 否       | -          | 是否导出数据到 Azure Blob Storage                                                                                                                                                                                                                                          |
| `--azblob-container`      | 是\*     | -          | 当设置了 `--azblob` 时，必须指定 Azure Blob 的容器名称                                                                                                                                                                                                                     |
| `--azblob-root`           | 是\*     | -          | 当设置了 `--azblob` 时，必须指定导出在容器中的根路径                                                                                                                                                                                                                       |
| `--azblob-account-name`   | 是\*     | -          | 当设置了 `--azblob` 时，必须指定 Azure Blob 的账户名称                                                                                                                                                                                                                     |
| `--azblob-account-key`    | 否       | -          | Azure Blob 账户密钥                                                                                                                                                                                                                                                        |
| `--azblob-endpoint`       | 否       | -          | Azure Blob 端点 URL                                                                                                                                                                                                                                                        |
| `--azblob-sas-token`      | 否       | -          | Azure Blob SAS 令牌                                                                                                                                                                                                                                                        |

### 导出目标
- `schema`: 仅导出表结构（`SHOW CREATE TABLE`）
- `data`: 仅导出表数据（`COPY DATABASE TO`）
- `all`: 导出表结构和数据（默认）

## 导入工具

### 命令语法
```bash
greptime cli data import [OPTIONS]
```

### 选项
| 选项                     | 是否必需 | 默认值     | 描述                                                                                                                                    |
| ------------------------ | -------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--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`: 仅导入表结构
- `data`: 仅导入表数据
- `all`: 导入表结构和数据（默认）
