diff --git a/src/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md b/src/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
index 47d38c9f6..01d9eb9b7 100644
--- a/src/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
+++ b/src/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
@@ -1,7 +1,11 @@
# Data Export
## 1. Function Overview
-The data export tool `export-data.sh/bat` is located in the `tools` directory and can export query results from specified SQL statements into CSV, SQL, or TsFile (open-source time-series file format) formats. Its specific functionalities are as follows:
+
+IoTDB supports two methods for data export:
+
+* Data Export Tool: `export-data.sh/bat` is located in the `tools` directory. It can export the query results of specified SQL statements into CSV, SQL, and TsFile (open-source time-series file format) files.
+* PIPE Framework-based TsFileBackup: `tsfile-backup.sh/bat` is located in the `tools` directory. It can export specified data files into TsFile format using the PIPE framework.
@@ -19,15 +23,18 @@ The data export tool `export-data.sh/bat` is located in the `tools` directory an
File containing custom SQL statements.
-
TsFile
+
TsFile
Open-source time-series file format.
+
+
tsfile-backup.sh/bat
+
An open-source time-series data file format,and this script supports the Object data type.
+
-- Does not support the Object data type.
-## 2. Detailed Features
+## 2. Data Export Tool
### 2.1 Common Parameters
| Short | Full Parameter | Description | Required | Default |
|----------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------- |-----------------------------------------------|
@@ -91,7 +98,7 @@ The data export tool `export-data.sh/bat` is located in the `tools` directory an
> export-data.sh -ft csv -sql_dialect table -t /path/export/dir -q "select * from table1"
Parse error: Missing required option: db
```
-## 2.3 SQL Format
+### 2.3 SQL Format
#### 2.3.1 Command
```Shell
# Unix/OS X
@@ -168,3 +175,72 @@ Parse error: Missing required option: db
> /tools/export-data.sh -ft tsfile -sql_dialect table -t /path/export/dir -start_time 0
Parse error: Missing required option: db
```
+
+
+## 3. TsFileBackup Based on PIPE Framework
+Since **V2.0.9.2**, IoTDB supports the `tsfile-backup.sh/bat` script. This script can automatically generate and send the `CREATE PIPE` SQL command to the server, exporting specified data files to TsFile format.
+
+**Notes:**
+1. **To use this script, contact the Timecho Team to obtain the customized installation package `timechodb--extension`.**
+2. **This script supports exporting Object-type data to TsFile files.**
+
+
+### 3.1 Execution Commands
+```Shell
+# Unix/OS X
+> tools/tsfile-backup.sh [-sql_dialect ] [-h ] [-p ]
+ [-u ] [-pw ] [-path ] [-db ] [-table
+
] [-s ] [-e ] [-t ]
+ [-th ] [-tu ] [-tp ]
+ [--rate_limit] [--plugin_jar] [-help]
+```
+
+
+### 3.2 Script Parameters
+| Abbreviation | Full Name | Description | Required | Default |
+| ------------ | ------------------ | ----------------------------------------------------------------------------------------------------------- | -------- | --------------- |
+| `-sql_dialect` | `--sql_dialect` | Specifies the data model type. Valid values: `tree` (Tree Model) or `table` (Table Model). | Yes | - |
+| `-h` | `--host` | Local host address (IP of the IoTDB instance where the data resides). | No | `127.0.0.1` |
+| `-p` | `--port` | Port number for the IoTDB RPC service. | No | `6667` |
+| `-u` | `--user` | Username for IoTDB authentication. | No | `root` |
+| `-pw` | `--password` | Password for IoTDB authentication (hidden input supported). | No | `root` |
+| `-t` | `--target` | Export target directory. In SCP mode, this is an absolute physical path on the remote server. TsFile and associated Object directories will be exported here. | Yes | - |
+| `-db` | `--database` | Database name (optional for Table Model). | No | `.*` |
+| `-table` | `--table` | Table name (optional for Table Model). | No | `.*` |
+| `-s` | `--start_time` | Start time (ISO8601 format e.g. `2026-01-01T00:00:00` or millisecond timestamp). Only data from this time onwards is exported. | No | - |
+| `-e` | `--end_time` | End time (same format as above). Only data before this time is exported. | No | - |
+| `-th` | `--target_host` | Remote target host IP. If specified, the script automatically configures Pipe to use SCP for data transfer. | No | - |
+| `-tu` | `--target_host_user` | Username for SSH/SCP login to the remote server. | No | - |
+| `-tpw` | `--target_host_pw` | Password for remote authentication (hidden input supported). | No | - |
+| `-tp` | `--target_host_port` | Remote SSH port. | No | `22` |
+| `--rate_limit` | `--rate_limit` | Transfer rate limit (unit: Bytes/s) to prevent excessive bandwidth usage. | No | - |
+| `--plugin_jar` | `--plugin_jar` | Path to the Pipe plugin JAR file. | No | - |
+| `-help` | `--help` | Show help information. | No | - |
+
+
+### 3.3 Execution Examples
+
+Example 1: SCP Remote Export (Send Data to Another Server)
+
+```Bash
+./tsfile-backup.sh -sql_dialect table -db test_db -t /remote/archive/ -th 192.168.1.100 -tu backup_user -tpw ComplexPass123!
+```
+
+Example 2: Remote Object Data Export with Rate Limiting
+
+```Bash
+./tsfile-backup.sh -sql_dialect table -t /mnt/backup/ -th 10.0.0.5 -tu iot_admin -tpw Admin@2026 --rate_limit 5242880
+```
+
+Example 3: Specify Pipe Plugin JAR Directory
+
+```Bash
+./tsfile-backup.sh -sql_dialect table -db test -table .* -tu luoluoyuyu -tpw -t /tmp/backup --plugin_jar /local/lib/tsfile-remote-sink-2.0.8-SNAPSHOT-jar-with-dependencies.jar
+```
diff --git a/src/UserGuide/Master/Table/Tools-System/Data-Import-Tool_timecho.md b/src/UserGuide/Master/Table/Tools-System/Data-Import-Tool_timecho.md
index 7c18a1e54..b2c8cfe81 100644
--- a/src/UserGuide/Master/Table/Tools-System/Data-Import-Tool_timecho.md
+++ b/src/UserGuide/Master/Table/Tools-System/Data-Import-Tool_timecho.md
@@ -37,7 +37,8 @@ IoTDB supports three methods for data import:
-- Does not support the Object data type.
+- The table model TsFile import currently only supports local import.
+- Since version V2.0.9.2, the import-data.sh/bat script supports the Object data type when importing TsFile files.
## 2. Data Import Tool
### 2.1 Common Parameters
@@ -184,7 +185,7 @@ Fail to insert measurements '[column.name]' caused by [data type is not consiste
# Unix/OS X
> tools/import-data.sh -ft [-sql_dialect] -db -table
[-h ] [-p ] [-u ] [-pw ]
- -s -os [-sd ] -of [-fd ]
+ -s [-o ] -os [-sd ] -of [-fd ]
[-tn ] [-tz ] [-tp ]
# Windows
@@ -197,18 +198,19 @@ Fail to insert measurements '[column.name]' caused by [data type is not consiste
# V2.0.4.x and later versions
> tools\windows\import-data.bat -ft [-sql_dialect] -db -table
[-h ] [-p ] [-u ] [-pw ]
- -s -os [-sd ] -of [-fd ]
+ -s [-o ] -os [-sd ] -of [-fd ]
[-tn ] [-tz ] [-tp ]
```
#### 2.4.2 TsFile-Specific Parameters
-| Short | Full Parameter | Description | Required | Default |
-| ----------- | ----------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------- | --------------------------- |
-| `-os` | `--on_success` | Action for successful files: `none`: Do not delete the file. `mv`: Move the successful file to the target directory. `cp`:Create a hard link (copy) of the successful file to the target directory. `delete`:Delete the file. | **Yes** | - |
-| `-sd` | `--success_dir` | Target directory for `mv`/`cp` actions on success. Required if `-os` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/success` |
-| `-of` | `--on_fail` | Action for failed files: `none`:Skip the file. `mv`:Move the failed file to the target directory. `cp`:Create a hard link (copy) of the failed file to the target directory. `delete`:Delete the file.. | **Yes** | - |
-| `-fd` | `--fail_dir` | Target directory for `mv`/`cp` actions on failure. Required if `-of` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/fail` |
-| `-tp` | `--timestamp_precision` | TsFile timestamp precision: `ms`, `us`, `ns`. For non-remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The system will manually verify if the timestamp precision matches the server. If it does not match, an error will be returned. For remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The Pipe system will automatically verify if the timestamp precision matches. If it does not match, a Pipe error will be returned. | No | `ms` |
+| Short | Full Parameter | Description | Required | Default |
+|---------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|-----------------------|
+| `-os` | `--on_success` | Action for successful files: `none`: Do not delete the file. `mv`: Move the successful file to the target directory. `cp`:Create a hard link (copy) of the successful file to the target directory. `delete`:Delete the file. | **Yes** | - |
+| `-sd` | `--success_dir` | Target directory for `mv`/`cp` actions on success. Required if `-os` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/success` |
+| `-of` | `--on_fail` | Action for failed files: `none`:Skip the file. `mv`:Move the failed file to the target directory. `cp`:Create a hard link (copy) of the failed file to the target directory. `delete`:Delete the file.. | **Yes** | - |
+| `-fd` | `--fail_dir` | Target directory for `mv`/`cp` actions on failure. Required if `-of` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/fail` |
+| `-tp` | `--timestamp_precision` | TsFile timestamp precision: `ms`, `us`, `ns`. For non-remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The system will manually verify if the timestamp precision matches the server. If it does not match, an error will be returned. For remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The Pipe system will automatically verify if the timestamp precision matches. If it does not match, a Pipe error will be returned. | No | `ms` |
+| `-o` | `--object-file-paths` | Storage path for Object files. Default mode: If this parameter is not specified, the script automatically identifies and imports Object files located in the subdirectory with the same name as the TsFile. Absolute path mode: Explicitly specifies the external storage root directory for Object files; the tool creates an associated data index based on this path. Note: This parameter is supported since V2.0.9.2 | No | |
#### 2.4.3 Examples
@@ -221,6 +223,54 @@ Fail to insert measurements '[column.name]' caused by [data type is not consiste
Parse error: Missing required options: os, of
```
+
+**Object Type Import**
+
+1. Import Directory Structure
+
+* Default Mode
+
+```Bash
+target_dir
+ ├── tsfile.tsfile
+ └── tsfile/ (matches the TsFile name)
+ ├── regionID/tableName/tag1/tag2/field/timestamp1.bin
+ ├── regionID/tableName/tag1/tag2/field/timestamp2.bin
+ └── regionID/tableName1/tag3/tag4/field/timestamp1.bin
+```
+
+* Specified Object Directory
+
+```Bash
+target_dir
+ ├── tsfile.tsfile
+object_dir
+ ├── regionID/tableName/tag1/tag2/field/timestamp1.bin
+ ├── regionID/tableName/tag1/tag2/field/timestamp2.bin
+ └── regionID/tableName1/tag3/tag4/field/timestamp1.bin
+```
+
+2. Command Line Examples
+
+* Basic Import (automatically identifies Object files in the TsFile-named directory)
+
+```Bash
+./import-data.sh -sql_dialect table -ft tsfile -s /data/import/sensor_v1.tsfile -db database1 -os none -of none
+```
+
+* Batch Directory Import (specify concurrent threads and post-success action)
+
+```Bash
+./import-data.sh -sql_dialect table -ft tsfile -s /data/raw_data/ -tn 16 -os mv -sd /data/archive/
+```
+
+* Table Model Associated Import (specify external Object storage path and target database)
+
+```Bash
+./import-data.sh -sql_dialect table -ft tsfile -s /data/import/ -db factory_db -o /mnt/object_storage/ -of mv -fd /data/error_log/
+```
+
+
## 3. TsFile Auto-Loading
This feature enables IoTDB to automatically monitor a specified directory for new TsFiles and load them into the database without manual intervention.
@@ -281,7 +331,7 @@ load '' with (
|--------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|--------------------------------|-------------------|----------------------------|
| `database-level` | When the database corresponding to the TsFile does not exist, the database hierarchy level can be specified via the ` database-level` parameter. The default is the level set in `iotdb-common.properties`. For example, setting level=1 means the prefix path of level 1 in all time series in the TsFile will be used as the database. | Integer | `[1: Integer.MAX_VALUE]` | No | 1 |
| `on-success` | Action for successfully loaded TsFiles: `delete` (delete the TsFile after successful import) or `none` (retain the TsFile in the source folder). | String | `delete / none` | No | delete |
-| `model` | Specifies whether the TsFile uses the `table` model or `tree` model. This parameter becomes invalid starting from V2.0.2.1. The system automatically identifies whether the data model is tree-based or table-based. | String | `tree / table` | No | Aligns with `-sql_dialect` |
+| `model` | Specifies whether the TsFile uses the `table` model or `tree` model. This parameter becomes invalid starting from V2.0.2.1. The system automatically identifies whether the data model is tree-based or table-based. | String | `tree / table` | No | Aligns with `-sql_dialect` |
| `database-name` | Table model only: Target database for import. Automatically created if it does not exist. The database-name must not include the `root.` prefix (an error will occur if included). | String | `-` | No | null |
| `convert-on-type-mismatch` | Whether to perform type conversion during loading if data types in the TsFile mismatch the target schema. | Boolean | `true / false` | No | true |
| `verify` | Whether to validate the schema before loading the TsFile. | Boolean | `true / false` | No | true |
diff --git a/src/UserGuide/Master/Table/User-Manual/Data-Sync_timecho.md b/src/UserGuide/Master/Table/User-Manual/Data-Sync_timecho.md
index 17774e0ed..9628b6d30 100644
--- a/src/UserGuide/Master/Table/User-Manual/Data-Sync_timecho.md
+++ b/src/UserGuide/Master/Table/User-Manual/Data-Sync_timecho.md
@@ -81,7 +81,7 @@ By declaratively configuring these three parts in an SQL statement, flexible dat
- Data synchronization between IoTDB of 1. x series version and IoTDB of 2. x and above series versions is not supported.
- When performing data synchronization tasks, avoid executing any deletion operations to prevent inconsistencies between the two ends.
- The `pipe` and `pipe plugins` for tree modes and table modes are designed to be isolated from each other. Before creating a `pipe`, it is recommended to first use the `show` command to query the built-in plugins available under the current `-sql_dialect` parameter configuration to ensure syntax compatibility and functional support.
-- Does not support the Object data type.
+- Object-type data export is supported since version V2.0.9.2.
## 2. Usage Instructions
@@ -227,17 +227,18 @@ Example Output:
```SQL
IoTDB> SHOW PIPEPLUGINS
-**+---------------------+----------+-------------------------------------------------------------------------------------------------+---------+
-| PluginName|PluginType| ClassName|PluginJar|
-+---------------------+----------+-------------------------------------------------------------------------------------------------+---------+
-| DO-NOTHING-PROCESSOR| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.processor.donothing.DoNothingProcessor| |
-| DO-NOTHING-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.donothing.DoNothingConnector| |
-| IOTDB-AIR-GAP-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.airgap.IoTDBAirGapConnector| |
-| IOTDB-SOURCE| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.extractor.iotdb.IoTDBExtractor| |
-| IOTDB-THRIFT-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.thrift.IoTDBThriftConnector| |
-|IOTDB-THRIFT-SSL-SINK| Builtin|org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.thrift.IoTDBThriftSslConnector| |
-| WRITE-BACK-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.writeback.WriteBackConnector| |
-+---------------------+----------+-------------------------------------------------------------------------------------------------+---------+
++---------------------+----------+-----------------------------------------------------------------------------------------+---------+----------------+
+| PluginName|PluginType| ClassName|PluginJar|ExceptionMessage|
++---------------------+----------+-----------------------------------------------------------------------------------------+---------+----------------+
+| DO-NOTHING-PROCESSOR| Builtin|org.apache.iotdb.commons.pipe.agent.plugin.builtin.processor.donothing.DoNothingProcessor| | |
+| DO-NOTHING-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.donothing.DoNothingSink| | |
+| IOTDB-AIR-GAP-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.iotdb.airgap.IoTDBAirGapSink| | |
+| IOTDB-SOURCE| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.source.iotdb.IoTDBSource| | |
+| IOTDB-THRIFT-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.iotdb.thrift.IoTDBThriftSink| | |
+|IOTDB-THRIFT-SSL-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.iotdb.thrift.IoTDBThriftSslSink| | |
+| TSFILE-LOCAL-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.tsfile.PipeTsFileLocalSink| | |
+| WRITE-BACK-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.writeback.WriteBackSink| | |
++---------------------+----------+-----------------------------------------------------------------------------------------+---------+----------------+
```
Detailed introduction of pre-installed plugins is as follows (for detailed parameters of each plugin, please refer to the [Parameter Description](#reference-parameter-description):
@@ -263,8 +264,8 @@ Detailed introduction of pre-installed plugins is as follows (for detailed param
Default processor plugin that does not process incoming data.
-
sink Plugin
-
Supported
+
sink Plugin
+
Supported
do-nothing-sink
Does not process outgoing data.
@@ -288,6 +289,14 @@ Detailed introduction of pre-installed plugins is as follows (for detailed param
opc-ua-sink
An OPC UA protocol data transfer plugin for IoTDB (V2.0.2 and above), supporting both Client/Server and Pub/Sub communication modes.
+
+
tsfile-local-sink
+
Used in IoTDB (V2.0.9.2 and later) to support exporting Object data to the local file system where the IoTDB server resides.
+
+
+
tsfile-remote-sink
+
Used in IoTDB (V2.0.9.2 and later) to support sending Object data to a remote server via the SSH/SCP protocol.
+
@@ -514,6 +523,77 @@ WITH SINK (
)
```
+### 3.9 Object-Type Data Export
+Since version V2.0.9.2, IoTDB supports exporting Object-type data. The following two methods are supported by configuring sink parameters:
+
+* **Local Mode**: Exports data to the local file system where the IoTDB server resides.
+* **SCP Mode**: Sends data to a remote server via the SSH/SCP protocol.
+
+**Example 1: Local Export**
+
+You can directly use the built-in `tsfile-local-sink` plugin to create a PIPE statement for data export. For example:
+
+```SQL
+CREATE PIPE tsfile_export_local
+WITH SOURCE (
+ 'source' = 'iotdb-source',
+ 'table-name' = 'test_table'
+)
+WITH PROCESSOR (
+ 'processor' = 'do-nothing-processor'
+)
+WITH SINK (
+ 'sink' = 'tsfile-local-sink', -- Required, specifies the Sink type
+ 'sink.local.target-path' = '/data/backup/export_2024' -- Target export path
+ 'sink.rate-limit-bytes-per-second' = '10485760' -- Rate limit: 10MB/s
+);
+```
+
+**Example 2: Remote Transfer**
+
+1. Contact the Timecho Team to obtain the JAR package related to the `tsfile-remote-sink` plugin, such as `tsfile-remote-sink--jar-with-dependencies.jar`, and place it in a path accessible to IoTDB (e.g., all Data Node hosts).
+2. Register the plugin using the following statement:
+
+```SQL
+CREATE PIPEPLUGIN tsfile_remote_sink
+AS 'org.apache.iotdb.pipe.plugin.sink.tsfile.PipeTsFileRemoteSink'
+USING URI 'file:///path/to/tsfile-remote-sink--jar-with-dependencies.jar';
+```
+
+3. Create the PIPE statement:
+
+```SQL
+CREATE PIPE tsfile_export_scp
+WITH SOURCE (
+ 'source' = 'iotdb-source',
+ 'table-name' = 'test_table'
+)
+WITH PROCESSOR (
+ 'processor' = 'do-nothing-processor'
+)
+WITH SINK (
+ 'sink' = 'tsfile_remote_sink',
+ 'sink.file-mode' = 'scp', -- Specifies SCP mode
+ 'sink.scp.host' = '192.168.1.100', -- Remote host IP
+ 'sink.scp.port' = '22', -- SSH port
+ 'sink.scp.user' = 'backup_user', -- SSH username
+ 'sink.scp.password' = 'ComplexPass123!', -- SSH password
+ 'sink.scp.remote-path' = '/remote/archive/', -- Remote storage path
+ 'sink.rate-limit-bytes-per-second' = '10485760' -- Rate limit: 10MB/s
+);
+```
+
+**Sink Exported TSFile and Object Format:**
+
+```Bash
+target_dir
+ ├── tsfile.tsfile
+ └── tsfile/ (matches the TSFile name)
+ ├── regionID/tableName/tag1/tag2/field/timestamp1.bin
+ ├── regionID/tableName/tag1/tag2/field/timestamp2.bin
+ └── regionID/tableName1/tag3/tag4/field/timestamp1.bin
+```
+
## Reference: Notes
You can adjust the parameters for data synchronization by modifying the IoTDB configuration file (`iotdb-system.properties`), such as the directory for storing synchronized data. The complete configuration is as follows:
@@ -689,3 +769,23 @@ pipe_all_sinks_rate_limit_bytes_per_second=-1
| sink.user | User for OPC UA, specified in the configuration | String | No | root |
| sink.password | Password for OPC UA, specified in the configuration | String | No | TimechoDB@2021 (Before V2.0.6.x it is root) |
| sink.opcua.placeholder | A placeholder string used to substitute for null mapping paths when the value of the ID column is null | String | Optional | "null" |
+
+
+#### tsfile-local-sink
+| Parameter | Description | Value Range | Required | Default |
+|-----------------------------------|-----------------------------------------------------------------------------|------------------------|----------|---------|
+| sink | Component name | String: tsfile-local-sink | Yes | - |
+| sink.local.target-path | Local target directory | String | Yes | - |
+| sink.rate-limit-bytes-per-second | Rate limit threshold (unit: bytes/second). Takes effect when enabled. No limit if rate-limit <= 0 | Long | No | 0 |
+
+#### tsfile-remote-sink
+| Parameter | Description | Value Range | Required | Default |
+|------------------------------------|-----------------------------------------------------------------------------|-------------------------|----------|---------|
+| sink | Component name | String: tsfile-remote-sink | Yes | - |
+| sink.scp.host | Remote host IP | String | Yes | - |
+| sink.scp.port | Remote SSH port | Long | No | 22 |
+| sink.scp.user | Remote SSH user | String | Yes | - |
+| sink.scp.password | Remote SSH password | String | Yes | - |
+| sink.scp.remote-path | Remote target directory | String | Yes | - |
+| sink.rate-limit-bytes-per-second | Unit: bytes/second. Takes effect when enabled. No limit if rate-limit <= 0 | Long | No | 0 |
+
diff --git a/src/UserGuide/latest-Table/Tools-System/Data-Export-Tool_timecho.md b/src/UserGuide/latest-Table/Tools-System/Data-Export-Tool_timecho.md
index 47d38c9f6..01d9eb9b7 100644
--- a/src/UserGuide/latest-Table/Tools-System/Data-Export-Tool_timecho.md
+++ b/src/UserGuide/latest-Table/Tools-System/Data-Export-Tool_timecho.md
@@ -1,7 +1,11 @@
# Data Export
## 1. Function Overview
-The data export tool `export-data.sh/bat` is located in the `tools` directory and can export query results from specified SQL statements into CSV, SQL, or TsFile (open-source time-series file format) formats. Its specific functionalities are as follows:
+
+IoTDB supports two methods for data export:
+
+* Data Export Tool: `export-data.sh/bat` is located in the `tools` directory. It can export the query results of specified SQL statements into CSV, SQL, and TsFile (open-source time-series file format) files.
+* PIPE Framework-based TsFileBackup: `tsfile-backup.sh/bat` is located in the `tools` directory. It can export specified data files into TsFile format using the PIPE framework.
@@ -19,15 +23,18 @@ The data export tool `export-data.sh/bat` is located in the `tools` directory an
File containing custom SQL statements.
-
TsFile
+
TsFile
Open-source time-series file format.
+
+
tsfile-backup.sh/bat
+
An open-source time-series data file format,and this script supports the Object data type.
+
-- Does not support the Object data type.
-## 2. Detailed Features
+## 2. Data Export Tool
### 2.1 Common Parameters
| Short | Full Parameter | Description | Required | Default |
|----------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------- |-----------------------------------------------|
@@ -91,7 +98,7 @@ The data export tool `export-data.sh/bat` is located in the `tools` directory an
> export-data.sh -ft csv -sql_dialect table -t /path/export/dir -q "select * from table1"
Parse error: Missing required option: db
```
-## 2.3 SQL Format
+### 2.3 SQL Format
#### 2.3.1 Command
```Shell
# Unix/OS X
@@ -168,3 +175,72 @@ Parse error: Missing required option: db
> /tools/export-data.sh -ft tsfile -sql_dialect table -t /path/export/dir -start_time 0
Parse error: Missing required option: db
```
+
+
+## 3. TsFileBackup Based on PIPE Framework
+Since **V2.0.9.2**, IoTDB supports the `tsfile-backup.sh/bat` script. This script can automatically generate and send the `CREATE PIPE` SQL command to the server, exporting specified data files to TsFile format.
+
+**Notes:**
+1. **To use this script, contact the Timecho Team to obtain the customized installation package `timechodb--extension`.**
+2. **This script supports exporting Object-type data to TsFile files.**
+
+
+### 3.1 Execution Commands
+```Shell
+# Unix/OS X
+> tools/tsfile-backup.sh [-sql_dialect ] [-h ] [-p ]
+ [-u ] [-pw ] [-path ] [-db ] [-table
+
] [-s ] [-e ] [-t ]
+ [-th ] [-tu ] [-tp ]
+ [--rate_limit] [--plugin_jar] [-help]
+```
+
+
+### 3.2 Script Parameters
+| Abbreviation | Full Name | Description | Required | Default |
+| ------------ | ------------------ | ----------------------------------------------------------------------------------------------------------- | -------- | --------------- |
+| `-sql_dialect` | `--sql_dialect` | Specifies the data model type. Valid values: `tree` (Tree Model) or `table` (Table Model). | Yes | - |
+| `-h` | `--host` | Local host address (IP of the IoTDB instance where the data resides). | No | `127.0.0.1` |
+| `-p` | `--port` | Port number for the IoTDB RPC service. | No | `6667` |
+| `-u` | `--user` | Username for IoTDB authentication. | No | `root` |
+| `-pw` | `--password` | Password for IoTDB authentication (hidden input supported). | No | `root` |
+| `-t` | `--target` | Export target directory. In SCP mode, this is an absolute physical path on the remote server. TsFile and associated Object directories will be exported here. | Yes | - |
+| `-db` | `--database` | Database name (optional for Table Model). | No | `.*` |
+| `-table` | `--table` | Table name (optional for Table Model). | No | `.*` |
+| `-s` | `--start_time` | Start time (ISO8601 format e.g. `2026-01-01T00:00:00` or millisecond timestamp). Only data from this time onwards is exported. | No | - |
+| `-e` | `--end_time` | End time (same format as above). Only data before this time is exported. | No | - |
+| `-th` | `--target_host` | Remote target host IP. If specified, the script automatically configures Pipe to use SCP for data transfer. | No | - |
+| `-tu` | `--target_host_user` | Username for SSH/SCP login to the remote server. | No | - |
+| `-tpw` | `--target_host_pw` | Password for remote authentication (hidden input supported). | No | - |
+| `-tp` | `--target_host_port` | Remote SSH port. | No | `22` |
+| `--rate_limit` | `--rate_limit` | Transfer rate limit (unit: Bytes/s) to prevent excessive bandwidth usage. | No | - |
+| `--plugin_jar` | `--plugin_jar` | Path to the Pipe plugin JAR file. | No | - |
+| `-help` | `--help` | Show help information. | No | - |
+
+
+### 3.3 Execution Examples
+
+Example 1: SCP Remote Export (Send Data to Another Server)
+
+```Bash
+./tsfile-backup.sh -sql_dialect table -db test_db -t /remote/archive/ -th 192.168.1.100 -tu backup_user -tpw ComplexPass123!
+```
+
+Example 2: Remote Object Data Export with Rate Limiting
+
+```Bash
+./tsfile-backup.sh -sql_dialect table -t /mnt/backup/ -th 10.0.0.5 -tu iot_admin -tpw Admin@2026 --rate_limit 5242880
+```
+
+Example 3: Specify Pipe Plugin JAR Directory
+
+```Bash
+./tsfile-backup.sh -sql_dialect table -db test -table .* -tu luoluoyuyu -tpw -t /tmp/backup --plugin_jar /local/lib/tsfile-remote-sink-2.0.8-SNAPSHOT-jar-with-dependencies.jar
+```
diff --git a/src/UserGuide/latest-Table/Tools-System/Data-Import-Tool_timecho.md b/src/UserGuide/latest-Table/Tools-System/Data-Import-Tool_timecho.md
index 6f8263103..b2c8cfe81 100644
--- a/src/UserGuide/latest-Table/Tools-System/Data-Import-Tool_timecho.md
+++ b/src/UserGuide/latest-Table/Tools-System/Data-Import-Tool_timecho.md
@@ -37,7 +37,8 @@ IoTDB supports three methods for data import:
-- Does not support the Object data type.
+- The table model TsFile import currently only supports local import.
+- Since version V2.0.9.2, the import-data.sh/bat script supports the Object data type when importing TsFile files.
## 2. Data Import Tool
### 2.1 Common Parameters
@@ -184,7 +185,7 @@ Fail to insert measurements '[column.name]' caused by [data type is not consiste
# Unix/OS X
> tools/import-data.sh -ft [-sql_dialect] -db -table
[-h ] [-p ] [-u ] [-pw ]
- -s -os [-sd ] -of [-fd ]
+ -s [-o ] -os [-sd ] -of [-fd ]
[-tn ] [-tz ] [-tp ]
# Windows
@@ -197,18 +198,19 @@ Fail to insert measurements '[column.name]' caused by [data type is not consiste
# V2.0.4.x and later versions
> tools\windows\import-data.bat -ft [-sql_dialect] -db -table
[-h ] [-p ] [-u ] [-pw ]
- -s -os [-sd ] -of [-fd ]
+ -s [-o ] -os [-sd ] -of [-fd ]
[-tn ] [-tz ] [-tp ]
```
#### 2.4.2 TsFile-Specific Parameters
-| Short | Full Parameter | Description | Required | Default |
-| ----------- | ----------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------- | --------------------------- |
-| `-os` | `--on_success` | Action for successful files: `none`: Do not delete the file. `mv`: Move the successful file to the target directory. `cp`:Create a hard link (copy) of the successful file to the target directory. `delete`:Delete the file. | **Yes** | - |
-| `-sd` | `--success_dir` | Target directory for `mv`/`cp` actions on success. Required if `-os` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/success` |
-| `-of` | `--on_fail` | Action for failed files: `none`:Skip the file. `mv`:Move the failed file to the target directory. `cp`:Create a hard link (copy) of the failed file to the target directory. `delete`:Delete the file.. | **Yes** | - |
-| `-fd` | `--fail_dir` | Target directory for `mv`/`cp` actions on failure. Required if `-of` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/fail` |
-| `-tp` | `--timestamp_precision` | TsFile timestamp precision: `ms`, `us`, `ns`. For non-remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The system will manually verify if the timestamp precision matches the server. If it does not match, an error will be returned. For remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The Pipe system will automatically verify if the timestamp precision matches. If it does not match, a Pipe error will be returned. | No | `ms` |
+| Short | Full Parameter | Description | Required | Default |
+|---------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|-----------------------|
+| `-os` | `--on_success` | Action for successful files: `none`: Do not delete the file. `mv`: Move the successful file to the target directory. `cp`:Create a hard link (copy) of the successful file to the target directory. `delete`:Delete the file. | **Yes** | - |
+| `-sd` | `--success_dir` | Target directory for `mv`/`cp` actions on success. Required if `-os` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/success` |
+| `-of` | `--on_fail` | Action for failed files: `none`:Skip the file. `mv`:Move the failed file to the target directory. `cp`:Create a hard link (copy) of the failed file to the target directory. `delete`:Delete the file.. | **Yes** | - |
+| `-fd` | `--fail_dir` | Target directory for `mv`/`cp` actions on failure. Required if `-of` is `mv`/`cp`. The file name will be flattened and concatenated with the original file name. | Conditional | `${EXEC_DIR}/fail` |
+| `-tp` | `--timestamp_precision` | TsFile timestamp precision: `ms`, `us`, `ns`. For non-remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The system will manually verify if the timestamp precision matches the server. If it does not match, an error will be returned. For remote TsFile imports: Use -tp to specify the timestamp precision of the TsFile. The Pipe system will automatically verify if the timestamp precision matches. If it does not match, a Pipe error will be returned. | No | `ms` |
+| `-o` | `--object-file-paths` | Storage path for Object files. Default mode: If this parameter is not specified, the script automatically identifies and imports Object files located in the subdirectory with the same name as the TsFile. Absolute path mode: Explicitly specifies the external storage root directory for Object files; the tool creates an associated data index based on this path. Note: This parameter is supported since V2.0.9.2 | No | |
#### 2.4.3 Examples
@@ -221,6 +223,54 @@ Fail to insert measurements '[column.name]' caused by [data type is not consiste
Parse error: Missing required options: os, of
```
+
+**Object Type Import**
+
+1. Import Directory Structure
+
+* Default Mode
+
+```Bash
+target_dir
+ ├── tsfile.tsfile
+ └── tsfile/ (matches the TsFile name)
+ ├── regionID/tableName/tag1/tag2/field/timestamp1.bin
+ ├── regionID/tableName/tag1/tag2/field/timestamp2.bin
+ └── regionID/tableName1/tag3/tag4/field/timestamp1.bin
+```
+
+* Specified Object Directory
+
+```Bash
+target_dir
+ ├── tsfile.tsfile
+object_dir
+ ├── regionID/tableName/tag1/tag2/field/timestamp1.bin
+ ├── regionID/tableName/tag1/tag2/field/timestamp2.bin
+ └── regionID/tableName1/tag3/tag4/field/timestamp1.bin
+```
+
+2. Command Line Examples
+
+* Basic Import (automatically identifies Object files in the TsFile-named directory)
+
+```Bash
+./import-data.sh -sql_dialect table -ft tsfile -s /data/import/sensor_v1.tsfile -db database1 -os none -of none
+```
+
+* Batch Directory Import (specify concurrent threads and post-success action)
+
+```Bash
+./import-data.sh -sql_dialect table -ft tsfile -s /data/raw_data/ -tn 16 -os mv -sd /data/archive/
+```
+
+* Table Model Associated Import (specify external Object storage path and target database)
+
+```Bash
+./import-data.sh -sql_dialect table -ft tsfile -s /data/import/ -db factory_db -o /mnt/object_storage/ -of mv -fd /data/error_log/
+```
+
+
## 3. TsFile Auto-Loading
This feature enables IoTDB to automatically monitor a specified directory for new TsFiles and load them into the database without manual intervention.
diff --git a/src/UserGuide/latest-Table/User-Manual/Data-Sync_timecho.md b/src/UserGuide/latest-Table/User-Manual/Data-Sync_timecho.md
index 17774e0ed..9628b6d30 100644
--- a/src/UserGuide/latest-Table/User-Manual/Data-Sync_timecho.md
+++ b/src/UserGuide/latest-Table/User-Manual/Data-Sync_timecho.md
@@ -81,7 +81,7 @@ By declaratively configuring these three parts in an SQL statement, flexible dat
- Data synchronization between IoTDB of 1. x series version and IoTDB of 2. x and above series versions is not supported.
- When performing data synchronization tasks, avoid executing any deletion operations to prevent inconsistencies between the two ends.
- The `pipe` and `pipe plugins` for tree modes and table modes are designed to be isolated from each other. Before creating a `pipe`, it is recommended to first use the `show` command to query the built-in plugins available under the current `-sql_dialect` parameter configuration to ensure syntax compatibility and functional support.
-- Does not support the Object data type.
+- Object-type data export is supported since version V2.0.9.2.
## 2. Usage Instructions
@@ -227,17 +227,18 @@ Example Output:
```SQL
IoTDB> SHOW PIPEPLUGINS
-**+---------------------+----------+-------------------------------------------------------------------------------------------------+---------+
-| PluginName|PluginType| ClassName|PluginJar|
-+---------------------+----------+-------------------------------------------------------------------------------------------------+---------+
-| DO-NOTHING-PROCESSOR| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.processor.donothing.DoNothingProcessor| |
-| DO-NOTHING-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.donothing.DoNothingConnector| |
-| IOTDB-AIR-GAP-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.airgap.IoTDBAirGapConnector| |
-| IOTDB-SOURCE| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.extractor.iotdb.IoTDBExtractor| |
-| IOTDB-THRIFT-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.thrift.IoTDBThriftConnector| |
-|IOTDB-THRIFT-SSL-SINK| Builtin|org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.thrift.IoTDBThriftSslConnector| |
-| WRITE-BACK-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.writeback.WriteBackConnector| |
-+---------------------+----------+-------------------------------------------------------------------------------------------------+---------+
++---------------------+----------+-----------------------------------------------------------------------------------------+---------+----------------+
+| PluginName|PluginType| ClassName|PluginJar|ExceptionMessage|
++---------------------+----------+-----------------------------------------------------------------------------------------+---------+----------------+
+| DO-NOTHING-PROCESSOR| Builtin|org.apache.iotdb.commons.pipe.agent.plugin.builtin.processor.donothing.DoNothingProcessor| | |
+| DO-NOTHING-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.donothing.DoNothingSink| | |
+| IOTDB-AIR-GAP-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.iotdb.airgap.IoTDBAirGapSink| | |
+| IOTDB-SOURCE| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.source.iotdb.IoTDBSource| | |
+| IOTDB-THRIFT-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.iotdb.thrift.IoTDBThriftSink| | |
+|IOTDB-THRIFT-SSL-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.iotdb.thrift.IoTDBThriftSslSink| | |
+| TSFILE-LOCAL-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.tsfile.PipeTsFileLocalSink| | |
+| WRITE-BACK-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.sink.writeback.WriteBackSink| | |
++---------------------+----------+-----------------------------------------------------------------------------------------+---------+----------------+
```
Detailed introduction of pre-installed plugins is as follows (for detailed parameters of each plugin, please refer to the [Parameter Description](#reference-parameter-description):
@@ -263,8 +264,8 @@ Detailed introduction of pre-installed plugins is as follows (for detailed param
Default processor plugin that does not process incoming data.
-
sink Plugin
-
Supported
+
sink Plugin
+
Supported
do-nothing-sink
Does not process outgoing data.
@@ -288,6 +289,14 @@ Detailed introduction of pre-installed plugins is as follows (for detailed param
opc-ua-sink
An OPC UA protocol data transfer plugin for IoTDB (V2.0.2 and above), supporting both Client/Server and Pub/Sub communication modes.
+
+
tsfile-local-sink
+
Used in IoTDB (V2.0.9.2 and later) to support exporting Object data to the local file system where the IoTDB server resides.
+
+
+
tsfile-remote-sink
+
Used in IoTDB (V2.0.9.2 and later) to support sending Object data to a remote server via the SSH/SCP protocol.
+
@@ -514,6 +523,77 @@ WITH SINK (
)
```
+### 3.9 Object-Type Data Export
+Since version V2.0.9.2, IoTDB supports exporting Object-type data. The following two methods are supported by configuring sink parameters:
+
+* **Local Mode**: Exports data to the local file system where the IoTDB server resides.
+* **SCP Mode**: Sends data to a remote server via the SSH/SCP protocol.
+
+**Example 1: Local Export**
+
+You can directly use the built-in `tsfile-local-sink` plugin to create a PIPE statement for data export. For example:
+
+```SQL
+CREATE PIPE tsfile_export_local
+WITH SOURCE (
+ 'source' = 'iotdb-source',
+ 'table-name' = 'test_table'
+)
+WITH PROCESSOR (
+ 'processor' = 'do-nothing-processor'
+)
+WITH SINK (
+ 'sink' = 'tsfile-local-sink', -- Required, specifies the Sink type
+ 'sink.local.target-path' = '/data/backup/export_2024' -- Target export path
+ 'sink.rate-limit-bytes-per-second' = '10485760' -- Rate limit: 10MB/s
+);
+```
+
+**Example 2: Remote Transfer**
+
+1. Contact the Timecho Team to obtain the JAR package related to the `tsfile-remote-sink` plugin, such as `tsfile-remote-sink--jar-with-dependencies.jar`, and place it in a path accessible to IoTDB (e.g., all Data Node hosts).
+2. Register the plugin using the following statement:
+
+```SQL
+CREATE PIPEPLUGIN tsfile_remote_sink
+AS 'org.apache.iotdb.pipe.plugin.sink.tsfile.PipeTsFileRemoteSink'
+USING URI 'file:///path/to/tsfile-remote-sink--jar-with-dependencies.jar';
+```
+
+3. Create the PIPE statement:
+
+```SQL
+CREATE PIPE tsfile_export_scp
+WITH SOURCE (
+ 'source' = 'iotdb-source',
+ 'table-name' = 'test_table'
+)
+WITH PROCESSOR (
+ 'processor' = 'do-nothing-processor'
+)
+WITH SINK (
+ 'sink' = 'tsfile_remote_sink',
+ 'sink.file-mode' = 'scp', -- Specifies SCP mode
+ 'sink.scp.host' = '192.168.1.100', -- Remote host IP
+ 'sink.scp.port' = '22', -- SSH port
+ 'sink.scp.user' = 'backup_user', -- SSH username
+ 'sink.scp.password' = 'ComplexPass123!', -- SSH password
+ 'sink.scp.remote-path' = '/remote/archive/', -- Remote storage path
+ 'sink.rate-limit-bytes-per-second' = '10485760' -- Rate limit: 10MB/s
+);
+```
+
+**Sink Exported TSFile and Object Format:**
+
+```Bash
+target_dir
+ ├── tsfile.tsfile
+ └── tsfile/ (matches the TSFile name)
+ ├── regionID/tableName/tag1/tag2/field/timestamp1.bin
+ ├── regionID/tableName/tag1/tag2/field/timestamp2.bin
+ └── regionID/tableName1/tag3/tag4/field/timestamp1.bin
+```
+
## Reference: Notes
You can adjust the parameters for data synchronization by modifying the IoTDB configuration file (`iotdb-system.properties`), such as the directory for storing synchronized data. The complete configuration is as follows:
@@ -689,3 +769,23 @@ pipe_all_sinks_rate_limit_bytes_per_second=-1
| sink.user | User for OPC UA, specified in the configuration | String | No | root |
| sink.password | Password for OPC UA, specified in the configuration | String | No | TimechoDB@2021 (Before V2.0.6.x it is root) |
| sink.opcua.placeholder | A placeholder string used to substitute for null mapping paths when the value of the ID column is null | String | Optional | "null" |
+
+
+#### tsfile-local-sink
+| Parameter | Description | Value Range | Required | Default |
+|-----------------------------------|-----------------------------------------------------------------------------|------------------------|----------|---------|
+| sink | Component name | String: tsfile-local-sink | Yes | - |
+| sink.local.target-path | Local target directory | String | Yes | - |
+| sink.rate-limit-bytes-per-second | Rate limit threshold (unit: bytes/second). Takes effect when enabled. No limit if rate-limit <= 0 | Long | No | 0 |
+
+#### tsfile-remote-sink
+| Parameter | Description | Value Range | Required | Default |
+|------------------------------------|-----------------------------------------------------------------------------|-------------------------|----------|---------|
+| sink | Component name | String: tsfile-remote-sink | Yes | - |
+| sink.scp.host | Remote host IP | String | Yes | - |
+| sink.scp.port | Remote SSH port | Long | No | 22 |
+| sink.scp.user | Remote SSH user | String | Yes | - |
+| sink.scp.password | Remote SSH password | String | Yes | - |
+| sink.scp.remote-path | Remote target directory | String | Yes | - |
+| sink.rate-limit-bytes-per-second | Unit: bytes/second. Takes effect when enabled. No limit if rate-limit <= 0 | Long | No | 0 |
+
diff --git a/src/zh/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md b/src/zh/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
index c5f6499a8..3d3056dd7 100644
--- a/src/zh/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
+++ b/src/zh/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
@@ -2,7 +2,10 @@
## 1. 功能概述
-数据导出工具 `export-data.sh/bat` 位于 `tools` 目录下,能够将指定 SQL 的查询结果导出为 CSV、SQL 及 TsFile(开源时间序列文件格式)格式。具体功能如下:
+IoTDB 支持两种方式进行数据导出:
+
+* 数据导出工具 :`export-data.sh/bat` 位于 `tools `目录下,能够将指定 SQL 的查询结果导出为 CSV、SQL 及 TsFile (开源时间序列文件格式)格式。
+* 基于 PIPE 框架的 TsFileBackup:`tsfile-backup.sh/bat`位于 `tools `目录下,能够使用 PIPE 将指定的数据文件导出为 TsFile 格式。