首批通过分布式安全可靠测评,为关键业务系统打造
使用 OUTFILE 语句导出数据
更新时间:2026-06-08 20:12:09
SELECT INTO OUTFILE 语句能够对需要导出的字段做出限制,满足不需要导出主键字段的场景。配合 LOAD DATA INFILE 语句导入数据,是一种很便利的数据导入导出方式。
背景信息
OceanBase 数据库 MySQL 模式兼容这一个语法。MySQL 模式下,推荐使用OceanBase 数据库 V2.2.40 及以上版本,可以通过 MySQL Client、OBClient 执行命令。
注意
客户端需要直连 OceanBase 数据库实例才能执行导出操作。
语法格式
下述为 SELECT INTO OUTFILE 语句的语法:
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 中。
说明 |
into outfile '/home/admin/student.sql' |
| [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] | 是 | 指定输出文件中各个字段的格式,通过 Fields \| Columns 子句来指定。
|
terminated by ',' enclosed by '"' |
| [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] | 是 | 指定输出文件中每一行的开始和结束字符,通过 Lines 子句设置。
|
lines terminated by '\n' 表示一行将以换行符作为结束标志。 |
| [FROM TABLENAME] [WHERE condition] [GROUP BY group_expression_list ] [HAVING condition]] [ORDER BY order_expression_list] | 是 | 指定需要导出的表及内容。
|
from student |
使用示例
本文以数据导出到设备本地为例,提供数据的导出示例。
创建表并插入数据。
obclient> CREATE TABLE student (ID int primary key,name varchar(128),score int); Query OK, 0 rows affected obclient> INSERT INTO student VALUES(1,'lin',98),(2,'hei',90),(3,'ali',95); Query OK, 3 rows affected 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使用
root用户登录到数据库的sys租户,设置集群级配置项secure_file_priv,配置导入或导出文件时可以访问的路径。集群级配置项
secure_file_priv用于控制导入或导出到文件时可以访问的路径。默认值为NULL,表示导入、导出被禁用。obclient> SET GLOBAL secure_file_priv = "/home/admin"; Query OK, 0 rows affected使用
SELECT INTO OUTFILE语句导出数据。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登录机器,在设备本地的
/home/admin目录下查看导出的文件信息。[root@***** /home/admin]cat student.sql 1,"lin",98 2,"hei",90 3,"ali",95
更多信息
通过 OUTFILE 方法导出的文件,可以通过 load data 进行导入,详细方法,请参考 使用 LOAD DATA 导入数据。