发布于

OushuDB学习笔记——数据备份方法

一、通过 gpfdist 外部表
在 OushuDB 中可以用下面的命令创建外部表。其中,host 是 gpfdist 所在机器的主机名,本机的可以使用 localhost;port 是端口号;format 和 delimiter 后分别是导入表的文件格式(如 text、CSV)和分隔符。
CREATE EXTERNAL TABLE ext_table (……)
LOCATION ('gpfdist://host:port/filepath')
FORMAT 'TEXT' (DELIMITER '|');
然后加载数据到 table 表中:
CREATE TABLE table AS SELECT * FROM ext_table;
或者把建表语句和加载数据分开:
CREATE TABLE table(……);
INSERT INTO table SELECT * FROM ext_table;

假设有一张准备导出 gpfdist 的表 table,使用下面的命令创建 writable 外部表并加载数据:
CREATE WRITABLE EXTERNAL TABLE table_out (LIKE table)
LOCATION ('gpfdist://host:port/file')
FORMAT 'TEXT' (DELIMITER '|' NULL ' ');
INSERT INTO table_out SELECT * FROM table;
在 gpfdist 服务器上便可查看到相应目录下已经产生导出的文件了。

二、通过 hdfs 外部表
创建外部表,其中 host 和 port 分别表示 HDFS 的 namenode 主机地址和端口号
CREATE EXTERNAL TABLE ext_table(……)
LOCATION (‘hdfs://host:port/filepath’)
FORMAT ‘CSV’ (DELIMITER '|');
加载数据到 table 表中:
CREATE TABLE table AS SELECT * FROM ext_table;
或者把建表语句和加载数据分开:
CREATE TABLE table(……);
INSERT INTO table SELECT * FROM ext_table;
根据读取数据文件本身的规模,Oushu Database 会根据用户配置自动调整数据读取的并行度,实现动态并行的数据加载。

假设有一张准备导出 namenode 主机的表 table,使用下面的命令创建 writable 外部表并加载数据:
CREATE WRITABLE EXTERNAL TABLE table_out (LIKE table)
LOCATION ('hdfs://host:port/file')
FORMAT 'CSV' (DELIMITER '|' NULL ' ');
INSERT INTO table_out SELECT * FROM table;
在 HDFS 服务器上便可查看到相应目录下已经产生导出的文件了。

三、使用 COPY 命令
Copy 命令在 master 节点上可以通过 串行操作 来完成少量的数据导入和导出。在 copy 命令运行时可以让服务器直接读写文件,因此当前用户必须拥有文件的访问权限。
copy from 命令用于拷贝文件到数据表。如果该命令中的表的列参数未指定,则获取它的缺省值。使用 copy from 命令的表必须授予 insert 权限。
COPY customers FROM 'filename' (DELIMITER '|');
copy to 命令用于拷贝表内容或 select 查询语句的结果到文件。如果 select 后面列出部分字段,则仅拷贝指定字段的查询结果到文件中。使用 copy to 命令的表必须授予 select 权限。该命令只能在表上使用,不能用于视图。
COPY (SELECT......) TO 'filename';

四、使用 pg_dump 和 pg_restore
pg_dump 和 pg_restore 只适用于非常小的数据库备份。
pg_dump -Ft -f xxxx.tar xxxx
pg_restore -d new_db old_db.dump

评论
    test