SELECT INTO OUTFILE 语句是 DBA 常用的一种数据导出方式。
与 MySQLDump 对比, SELECT INTO OUTFILE 语句能够对需要导出的字段做出限制,这很好的满足了某些不需要导出主键字段的场景。再配合LOAD DATA INFILE 语句这将是一种很便利的数据导入导出方式。OceanBase 数据库目前兼容这一个语法。
| 模式 | 推荐使用的 OceanBase 数据库版本 | 推荐使用的客户端 |
|---|---|---|
| MySQL 模式 | V3.1.0 及以上 | MySQL Client、OBClient |
注意
客户端需要直连 OceanBase 数据库实例以做导入导出操作。
系统参数secure_file_priv,用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE(),在导出时需要设置对应权限。
- secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
- secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
- secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
语法
下述为 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]
语法中:
TERMINATED BY用来指定字段的分隔符。例如,TERMINATED BY ','指定了逗号作为两个字段值之间的标志。ENCLOSED BY用来指定包裹文件中字符值的符号。例如, ENCLOSED BY ' " ' 表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。ESCAPED BY指定字段中的通配符。例如,ESCAPED BY '*'表示将星号(*)指定为转义字符以取代默认的转义字符(\)。LINES TERMINATED BY指定每一行的结束字符。例如,LINES TERMINATED BY ','表示一行将以逗号(,)作为结束标志。
使用示例
使用 SELECT INTO OUTFILE 语句进行数据导出的示例如下:
obclient> SELECT * INTO OUTFILE '/tmp/demo01.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM student;「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




