# 练习-2: 使用 Dumpling 从 TiDB 数据库中导出

## 练习目的
在这个练习中，我们将使用 Dumpling 工具导出 TiDB 数据库中的单张表。

## 前提条件
+ 注意，您的实验环境（包括 IP，端口号，用户名，密码和目录）可能和手册不同。
+ 可以连接到实验用虚拟机。
+ TiDB 数据库之前部署完毕。

## 步骤
-----------------------------------------------
#### 1.连接到 TiDB 数据库,里面有实验数据库 emp ，在 emp 库中有 dept , emp 和 sal 三张表
```sql
 > show databases;
```
```sql
 > use emp; 
```
```sql
 > show tables;
```
-----------------------------------------------
#### 2.从 TiDB 集群中导出数据库 emp 中的表 dept:
```
 $ ./dumpling -uroot -ptidb -P4000 -h 172.31.0.106 --filetype sql -t 8 -o /tmp/dept -r 200000 -F 256MiB -T emp.dept
```
+ 各个参数的解释如下:
  + -uroot -P4000 -h 172.31.0.106 :用户名为 root,端口号为4000,主机 IP 为 172.31.0.106;
  + --filetype sql :导出文件类型为 SQL 文件｡ -t 8 :采用 8 线程同时导出｡ -o /tmp/dept :导出文件保存在 /tmp/dept 中｡ -r 200000 :每个导出文件最大容纳 200000 行数据｡ -F 256MiB :每个导出文件最大 256 MiB｡
-----------------------------------------------
#### 3.进入导出目录,查看导出文件:
```
 $ cd /tmp/dept
```
```
 $ ls
```

-----------------------------------------------
#### 4. emp-schema-create.sql 为创建数据库脚本:
```
 $ vi emp-schema-create.sql
```

-----------------------------------------------
#### 5. emp.dept-schema.sql 为建表脚本:
```
 $ vi emp.dept-schema.sql
```

-----------------------------------------------
#### 6. emp.dept.0000000010000.sql 为数据插入脚本
```
 $ vi emp.dept.0000000010000.sql
```

-----------------------------------------------
#### 7. metadata 为导出时的时间戳信息:
```
 $ vi metadata
```
-----------------------------------------------
#### 8.从 TiDB 集群中导出数据库 emp:
```
 $ ./dumpling -uroot -ptidb -P4000 -h 172.31.0.106 --filetype sql -t 8 -o /tmp/emp -r 200000 -F 256MiB -B emp
```

-----------------------------------------------
#### 9. 查看导出目录 /tmp/emp , 看到里面是各个表的 SQL 格式的导出文件:
```
 $ cd /tmp/emp
```
```
 $ ls
```

-----------------------------------------------
## 输出样例

-----------------------------------------------
#### 步骤 1 输出参考
```sql
 > show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| emp                |
| mysql              |
| test               |
| tidb               |
+--------------------+
7 rows in set (0.00 sec)
```

```sql
 > show tables;
+---------------+
| Tables_in_emp |
+---------------+
| dept           |
| emp           |
| sal           |
| t             |
+---------------+
4 rows in set (0.00 sec)
```

-----------------------------------------------
#### 步骤 3 查询参考
```
 $ ls
emp.dept.0000000010000.sql  emp.dept-schema.sql  emp-schema-create.sql  metadata
```

-----------------------------------------------
#### 步骤 9 查询参考
```
 $ ls
emp.dept.0000000010000.sql  emp.emp.0000000010000.sql  emp.sal.0000000010000.sql  emp.sal.0000000030000.sql  emp.sal-schema.sql     emp.t.0000000010000.sql  metadata
emp.dept-schema.sql         emp.emp-schema.sql         emp.sal.0000000020000.sql  emp.sal.0000000040000.sql  emp-schema-create.sql  emp.t-schema.sql
```