
# 手动导出IoTDB数据
#### 操作场景
该任务指导用户使用"export-csv.sh"将数据从IoTDB导出为CSV格式的文件。
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/notice_3.0-zh-cn.png)
导出CSV格式的数据文件，可能存在注入风险，请谨慎使用。
#### 前提条件
- 已安装客户端，请参见。例如安装目录为"/opt/client"，以下操作的客户端目录只是举例，请根据实际安装目录修改。
- 各组件业务用户由MRS集群管理员根据业务需要创建，具体操作请参见。安全模式下，"机机"用户需要下载keytab文件，具体操作请参见。"人机"用户第一次登录时需修改密码。
 
#### 操作步骤
1. 以客户端安装用户，登录安装客户端的节点。
2. 执行以下命令，切换到客户端安装目录。 **cd /opt/client**
   
3. 执行以下命令配置环境变量。 **source bigdata_env**
   
4. 首次登录IoTDB客户端前需执行以下步骤生成SSL客户端证书：
   1. 执行以下命令生成客户端SSL证书： **keytool -noprompt -import -alias myservercert -file ca.crt -keystore truststore.jks**
      执行该命令后需输入一个自定义密码。
      
   
   2. 将生成的"truststore.jks"文件复制到"*客户端安装目录* /IoTDB/iotdb/conf"目录下：
      **cp truststore.jks** *客户端安装目录* **/IoTDB/iotdb/conf**
      
    
5. 如果当前集群开启了Kerberos认证，执行以下命令认证当前用户，如果集群未开启Kerberos认证请跳过该步骤。 **kinit** *组件业务用户*
   
6. 执行以下命令，切换"export-csv.sh"运行脚本所在目录。 **cd /opt/client/IoTDB/iotdb/tools**
   
7. 在运行导出脚本之前，需要输入一些查询或指定一些SQL文件。如果在一个SQL文件中有多个SQL，SQL应该被换行符分隔。例如：
   ```
   select * from root.fit.d1
   select * from root.sg1.d1
   ```
   
8. 运行"export-csv.sh"，导出数据。
   **./export-csv.sh -h** *IoTDBServer实例节点的业务ip* **-p** *IoTDBServer RPC端口* -td \<directory\> \[-tf \<time-format\> -s \<sqlfile\>\]
   运行示例：
   ```
   ./export-csv.sh -h x.x.x.x -p 22260 -td ./
   # Or
   ./export-csv.sh -h x.x.x.x -p 22260 -td ./ -tf yyyy-MM-dd\ HH:mm:ss
   # Or
   ./export-csv.sh -h x.x.x.x -p 22260 -td ./ -s sql.txt
   # Or
   ./export-csv.sh -h x.x.x.x -p 22260 -td ./ -tf yyyy-MM-dd\ HH:mm:ss -s sql.txt
   ```
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - IoTDBServer实例节点的业务IP地址可登录FusionInsight Manager后选择"集群 \> 服务 \> IoTDB \> 实例"查看。
   
   - RPC端口可通过"集群 \> 服务 \> IoTDB \> 配置 \> 全部配置"，搜索参数"IOTDB_SERVER_RPC_PORT"获得。
   
   - 如果导出字段存在**,**特殊字符：整个字段会被用双引号括起来，例如：hello,world导出为"hello,world"。
   
   - 如果导出字段存在**"** 特殊字符：整个字段会被用双引号括起来且**"**会被替换为\\"，例如："world"导出为"\\"world\\""。
     
9. 运行[8]的命令会出现CSV注入风险提示，输入"yes"继续执行命令，输入其他，则取消数据导出操作。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676908222.png "点击放大")
   例如：输入"yes"后，需根据提示输入业务用户名和对应密码，当显示以下信息，表示数据导出成功。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676748506.png "点击放大")
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 为避免安全风险，推荐使用交互式方式导出CSV文件。
   
   - 导出CSV文件也可使用"**./export-csv.sh -h** *IoTDBServer实例节点的业务ip* **-p** *IoTDBServer RPC端口* **-u** *业务用户名* **-pw** *业务用户密码* -td \<directory\> \[-tf \<time-format\> -s \<sqlfile\>\]"命令。命令中如果携带认证密码信息可能存在安全风险，在执行命令前建议关闭系统的history命令记录功能，避免信息泄露。
     运行示例：
     ```
     ./export-csv.sh -h x.x.x.x -p 22260 -u test -pw 密码 -td ./
     # Or
     ./export-csv.sh -h x.x.x.x -p 22260 -u test -pw 密码 -td ./ -tf yyyy-MM-dd\ HH:mm:ss
     # Or
     ./export-csv.sh -h x.x.x.x -p 22260 -u test -pw 密码 -td ./ -s sql.txt
     # Or
     ./export-csv.sh -h x.x.x.x -p 22260 -u test -pw 密码 -td ./ -tf yyyy-MM-dd\ HH:mm:ss -s sql.txt
     ```
     如下显示表示CSV文件导出成功：
     ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001676748510.png "点击放大")
     
     
 
