文章目录
-
- [1. 需求场景](#1. 需求场景)
- [2. 解决办法](#2. 解决办法)
-
- [2.1 使用 DBeaver 工具](#2.1 使用 DBeaver 工具)
- [2.2 官方命令](#2.2 官方命令)
- [3. 可能会遇到的问题](#3. 可能会遇到的问题)
1. 需求场景
我现在遇到的情况:
- 服务器 和 本地均有 IoTDB 数据库,版本均为 2.0.5,都是表模型
- 两者的数据库名、数据表均一样 (可以不一样,后面会提到)
- 服务器 和 本地 均是 Windows 系统
要求: 需要将服务器中的某个表 导出;然后再导入到本地上。
目的: 本地需要测试数据是否正常,但是服务器和本地不再一个网段,所以本地无法访问服务器中的 IoTDB 数据
2. 解决办法
2.1 使用 DBeaver 工具
首先想到使用 DBeaver 工具进行导入导出:

一般我们选择导出 csv 文件。导出可以正常进行,但我们导入数据后,会出现各种错误。【放弃】
2.2 官方命令
那就是参考官方文档中给出的导出导入命令进行。
注意: 以下针对 IoTDB 版本为 2.0.5、2.0.6,如果其余版本使用了这个命令后出现了问题,则请参考官方文档。
首先: 进入 IoTDB 的安装目录,进入 tools 的 windows 目录,如下:

然后 当前目录下 cmd 输入下面命令
命令:
1、导出命令:
bash
export-data.bat -ft csv -sql_dialect table -h 127.0.0.1 -p 6667 -u root -pw root -db 数据库名(填写自己的数据库名)-q "select * from 表明(填写自己的数据表名)" -t "D:\iexport"
-h、-p :根据 自己的服务器地址和端口填写
-u、-pw :填写 自己的用户名和密码(没有就不写)
-t :是导出 csv 文件的存放位置(可自定义)

执行完后,会看到文件夹中有很多个 csv 文件 (不用管,也不打开看),直接执行下面的导入命令即可。
2、 导入命令:
bash
import-data.bat -ft csv -sql_dialect table -h 127.0.0.1 -p 6667 -u root -pw root -db 数据库名 -table 表名 -s "D:\iexport"
-s :导出 csv 文件的位置
运行后看到下面的 导入完成 即可(上面的 警告 不用管,看到 导入完成 就行)

3. 可能会遇到的问题
1、首先导入、导出所在的服务器需要有 Java 环境,否则运行命令时会报错。
2、Java 环境变量的路径中不要包含空格,否则也会报错:
bash
E:\apache-iotdb-2.0.5-all-bin\tools\windows>export-data.bat -ft csv -sql_dialect table -h xxx -p xxx -u root -pw root -db xxx-q "select * from xxx" -t "E:\iexport"
错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_333\lib;C:\Program
所以需要在 系统环境变量 中配置的 JAVA_HOME 路径中不要有 空格 和 中文。