首批通过分布式安全可靠测评,为关键业务系统打造
使用 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 语句的语法:
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] | 是 | 指定需要导出的表及内容。 where:查询的条件 group by:分组属性 having:分组过滤的条件 order by:排序属性。 | from student |
使用示例
数据导出示例如下:
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 目录下查看导出的文件信息:
[root@***** /home/admin]cat student.sql
1,"lin",98
2,"hei",90
3,"ali",95
更多信息
通过 OUTFILE 方法导出的文件,可以通过 load data 进行导入,详细方法,请参考 使用 LOAD DATA 导入数据。