可使用命名管道将数据从一个 GBase 8s 实例复制到另一个,而无需将数据写入中间文件。
可使用命名管道将数据从一个 GBase 8s 实例卸载,然后装入另一个实例,而无需将数据写入中间文件。也可使用命名管道将数据从一个表复制到同一个 GBase 8s
实例上的另一个表。
在以下示例中,数据将从一个实例上的源表复制到第二个实例上的目标表。
必须首先根据所用硬件平台使用以下命令之一创建命名管道。在本示例中,命名管道称为 pipe1。
% mkfifo /work/pipe1
% mknod /work/pipe1
执行以下步骤,将数据从源实例上的表复制到同一台计算机上目标实例中的表。
-
在源实例上创建源表。在本示例中,源表称为 source_data_table:
CREATE TABLE source_data_table
(
empid CHAR(5),
empname VARCHAR(40),
empaddr VARCHAR(100)
);
-
在源实例上创建外部表。在本示例中,外部表称为 ext_table:
CREATE EXTERNAL TABLE ext_table
(
empid CHAR(5),
empname VARCHAR(40),
empaddr VARCHAR(100)
)
USING
(DATAFILES
(
'PIPE:/work/pipe1'
)
);
-
在目标实例上创建目标表。在本示例中,目标表称为 destin_data_table:
CREATE TABLE destin_data_table
(
empid CHAR(5),
empname VARCHAR(40),
empaddr VARCHAR(100)
);
-
在目标实例上创建外部表。在本示例中,外部表称为 ext_table:
CREATE EXTERNAL TABLE ext_table
(
empid CHAR(5),
empname VARCHAR(40),
empaddr VARCHAR(100)
)
USING
(DATAFILES
(
'PIPE:/work/pipe1_1'
)
);
-
从 UNIX™ shell 运行以下命令。该命令将数据从 /work/pipe1 重定向到 /work/pipe1_1
cat /work/pipe1 > /work/pipe1_1
-
在目标实例上运行以下命令,以将数据从命名管道定向到目标表:
INSERT INTO destin_data_table SELECT * FROM ext_table;
-
在源实例上运行以下命令,以将数据假脱机到命名管道:
INSERT INTO ext_table SELECT * FROM source_data_table;
可使用多个管道,方法是在 DATAFILES 子句中插入多个 PIPE 语句,并为每个语句创建一个命名管道。