---
title: "使用 OUTFILE 语句导出数据 | OceanBase 文档中心"
description: 使用 OUTFILE 语句导出数据 SELECT INTO OUTFILE 语句能够对需要导出的字段做出限制，满足不需要导出主键字段的场景。配合 LOAD DATA INFILE 语句导入数据，是一种很便利的数据导入导出方式。 背景信息 OceanBase 数据库的 MySQL 模式兼容这一语法。推荐使用 Ocean…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.3 企业版 LTS

# 使用 OUTFILE 语句导出数据

更新时间：2023-07-19 13:03:06

SELECT INTO OUTFILE 语句能够对需要导出的字段做出限制，满足不需要导出主键字段的场景。配合 LOAD DATA INFILE 语句导入数据，是一种很便利的数据导入导出方式。

## 背景信息

OceanBase 数据库的 MySQL 模式兼容这一语法。推荐使用 OceanBase 数据库 V2.2.40 及以上版本，可以通过 MySQL Client、OBClient 执行命令。

> **注意**
>
>  
>
> 客户端需要直连 OceanBase 数据库实例以做导出操作。

## 语法格式

下述为 `SELECT INTO OUTFILE` 语句的语法：

```sql
SELECT [column_list] INTO OUTFILE {'/path/file' | 'oss://$PATH/$FILENAME/?host=$HOST&access_id=$ACCESSID&access_key=$ACCESSKEY'}
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [FROM  TABLENAME]
        [WHERE condition]
        [GROUP BY group_expression_list ]
        [HAVING condition]]
        [ORDER BY order_expression_list]

```

| 参数 | 是否必填 | 描述 | 示例 |
| --- | --- | --- | --- |
| SELECT [column_list] | 是 | 选择需要导出的列，如果要选中全部数据可以用'*'表示。 | select ID,name,score |
| '/PATH/FILE' 或 'oss://$PATH/$FILENAME/?host=$HOST&access_id=$ACCESSID&access_key=$ACCESSKEY' | 是 | 选择导出的文件路径，支持导出到阿里云 OSS 中。   > **说明**   > 由于阿里云 OSS 有文件大小的限制，对于超过 5 GB 的文件，导出到 OSS 时会被拆分成多个文件，每个文件小于 5 GB。 | into outfile '/home/admin/student.sql' |
| [{FIELDS \| COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] | 是 | 指定输出文件中各个字段的格式，通过 Fields \| Columns 子句来指定。   - terminated by：用来指定字段值之间的符号。例如，`TERMINATED BY ','` 指定了逗号作为两个字段值之间的标志。 - enclosed by：用来指定包裹字段值的符号。例如， `ENCLOSED BY ' " '` 表示字段值放在双引号之间，若加上关键字 `OPTIONALLY` 表示仅将字符串类型的值放在双引号之间。 - escaped by：用来指定转义字符。例如， `ESCAPED BY '*'` 表示将星号（*）指定为转义字符以取代默认的转义字符（\）。 | `terminated by ',' enclosed by '"'` |
| [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] | 是 | 指定输出文件中每一行的开始和结束字符，通过 Lines 子句设置。   - starting by：指定每一行开始的字符。 - terminated by：指定每一行的结束字符。 | `lines terminated by '\n'` 表示一行将以换行符作为结束标志。 |
| [FROM TABLENAME] [WHERE condition] [GROUP BY group_expression_list ] [HAVING condition]] [ORDER BY order_expression_list] | 是 | 指定需要导出的表及内容。 where：查询的条件 group by：分组属性 having：分组过滤的条件 order by：排序属性。 | from student |

## 使用示例

数据导出示例如下：

```sql
obclient> CREATE TABLE student (ID int primary key,name varchar(128),score int);
Query OK, 0 rows affected (0.04 sec)

obclient> INSERT INTO student VALUES(1,'lin',98),(2,'hei',90),(3,'ali',95);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

obclient> SELECT * FROM student;
+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | lin  |    98 |
|  2 | hei  |    90 |
|  3 | ali  |    95 |
+----+------+-------+
3 rows in set (0.00 sec)

obclient> SELECT ID,name,score INTO OUTFILE '/home/admin/student.sql'
            FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
            LINES TERMINATED BY '\n' FROM student;
Query OK, 3 rows affected (0.01 sec)

```

然后可以在设备本地 `/home/admin` 目录下查看导出的文件信息：

```bash
[root@***** /home/admin]cat student.sql
1,"lin",98
2,"hei",90
3,"ali",95

```

## 更多信息

通过 OUTFILE 方法导出的文件，可以通过 load data 进行导入，详细方法，请参考 [使用 LOAD DATA 导入数据](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355333)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
