SELECT INTO OUTFILE
语句是 DBA 常用的一种数据导出方式。与 MySQLDump 对比, SELECT INTO OUTFILE
语句能够对需要导出的字段做出限制,这很好的满足了某些不需要导出主键字段的场景。再配合LOAD DATA INFILE
语句这将是一种很便利的数据导入导出方式。OceanBase 数据库目前兼容这一个语法。
模式 | 推荐使用的 OceanBase 数据库版本 | 推荐使用的客户端 |
---|---|---|
MySQL 模式 | V2.2.40 及以上 | MySQL Client、OBClient |
Oracle 模式 | V2.2.40 及以上 | OBClient |
注意
客户端需要直连 OceanBase 数据库实例以做导入导出操作。
语法
下述为SELECT INTO OUTFILE
语句的语法:
SELECT [column_list] INTO '/PATH/FILE'
[TERMINATED BY OPTIONALLY]
[ENCLOSED BY OPTIONALLY]
[ESCAPED BY OPTIONALLY]
[LINES TERMINATED BY OPTIONALLY]
[FROM TABLENAME]
[WHERE condition]
[GROUP BY group_expression_list ]
[HAVING condition]]
[ORDER BY order_expression_list]
语法中:
TERMINATED BY
子句用来指定字段值之间的符号。例如,TERMINATED BY ','
指定了逗号作为两个字段值之间的标志。ENCLOSED BY
子句用来指定包裹文件中字符值的符号。例如,ENCLOSED BY ' " '
表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY
表示所有的值都放在双引号之间。ESCAPED BY
子句用来指定转义字符。例如,ESCAPED BY '*'
表示将星号(*)指定为转义字符以取代默认的转义字符(\)。LINES TERMINATED BY
子句用来指定一行结束的标志。例如,LINES TERMINATED BY ','
表示一行将以逗号(,)作为结束标志。
示例
以下是本示例准备的示例表 student 和其中的数据:
obclient> SELECT * FROM student;
+------+------+
| ID | AGE |
+------+------+
| 1 | 7 |
| 3 | 8 |
| 4 | 9 |
+------+------+
OceanBase 数据库兼容 MySQL 的 SELECT INTO OUTFILE
语句,所以在 OceanBase 数据库支持的客户端中运行下述语句以导出表 student 中的数据到指定路径的 TXT 文件中:
obclient> SELECT * INTO outfile '/tmp/demo01.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM student;
OceanBase 数据库也兼容 MySQL 的 LOAD DATA INFILE
语句,所以在 OceanBase 数据库支持的客户端中运行下述语句以导入 TXT 文件中的数据至目标表 student 中:
obclient> LOAD DATA INFILE '/tmp/demo01.txt' INTO TABLE student FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';