天天看點

從GP中解除安裝資料

兩種類型:并行(可寫外部表)和非并行(COPY)

兩種方式的可寫外部表:基于檔案和基于WEB

定義基于檔案的可寫外部表

使用CREATE WRITABLE EXTERNAL TABLE 指令地定義外部表并指出輸出檔案的位置和格式

使用gpfdist協定的可寫外部表

GP segment将資料發送給gpfdist程序,該程序将資料寫到指定名稱的檔案;

若希望輸出的資料分割到多個檔案,可以在外部表的定義中指定多個gpfdist的URL選項

例如:

CREATE WRITABLE EXTERNAL TABLE tb_wext_gf01(LIKE tb_cp_02)
LOCATION ('gpfdist://mdw:8081/tb_wext_gf01.out',
'gpfdist://mdw:8082/tb_wext_gf02.out',
)
FROMAT 'TEXT' (DELIMITER ',')
DISTRIBUTED RANDOMLY;
           
insert into tb_wext_gf01 select * from tb_cp_02
           

一定要指定分布鍵,有一個小技巧,分布鍵的選擇建議與将要導出的堆表的分布鍵保持一緻,這樣就不會進行資料重分步。

定義基于指令的可寫外部表

使用CREATE WRITABLE EXTERNAL WEB TABLE 指令定義外部表并指定可執行指令或程式

對于可寫WEB表,EXECUTE 子句指定的指令或腳本準備着接受資料輸入流;

可寫外部表有分步政策選項,預設為随機分布;

若使用HASH分布政策,在可寫外部表中定義相同的分布鍵可以改善解除安裝的性能。

在外部表定義的EXECUTE子句中,可根據需要設定環境變量。例如

CREATE WRITABLE EXTERNAL WEB TABLE tb_wext_wb01(output text)
EXECUTE 'export PATH=$PATH:/home/gpadmin;myprogram.sh'
FROMAT 'TEXT' 
DISTRIBUTED RANDOMLY;
           

WEB外部表和可寫表的可執行性

外部表執行OS指令或者腳本有一定的風險,根據需要,可以禁止在WEB表定義中使用EXECUTE。在Mater的postgresql.conf檔案設定gp_external_enable_exec=off

使用COPY解除安裝資料

在GP Master上使用COPY TO語句從資料庫表串行拷貝資料到檔案

例如:

COPY (SELECT * FROM tb_cp_02 WHERE date LIKE ‘2013%’ ) TO ‘/data/unload/tb_cp_02_2013.out’;

/COPY (SELECT * FROM tb_cp_02 WHERE date LIKE ‘2013%’ ) TO ‘/data/unload/tb_cp_02_2013.out’;–這個指令是在本地系統運作的 一般使用pgadminIII的插件。

從GP中解除安裝資料

可讀外部表的統計資訊

無法通過ANALYZE擷取,可以通過手工修改資料字典pg_class來設定粗略統計值

指定行數和資料庫頁面數(資料尺寸/32K)

預設行數為1000000,頁面數為1000

手工修改:

update pg_class set reltuples=500000,repages=150 where relname=‘tb_wext_gf01’;