暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

从 SQL 文件迁移数据到 OceanBase 数据库

2023-11-24
442

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论