AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Oracle 數據量 150T,PostgreSQL 能搞定嗎?

來源: 責編: 時間:2024-05-16 17:45:15 134觀看
導讀此版本的 parquet_s3_fdw 適用于 PostgreSQL 13、14、15 和 16。只讀模式下的 Apache Parquet 外部數據包裝器,支持 PostgreSQL 訪問 S3 存儲。用法加載擴展CREATE EXTENSION parquet_s3_fdw;創建服務器CREATE SERVER

此版本的 parquet_s3_fdw 適用于 PostgreSQL 13、14、15 和 16。dJe28資訊網——每日最新資訊28at.com

只讀模式下的 Apache Parquet 外部數據包裝器,支持 PostgreSQL 訪問 S3 存儲。dJe28資訊網——每日最新資訊28at.com

用法

加載擴展

CREATE EXTENSION parquet_s3_fdw;

創建服務器

CREATE SERVER parquet_s3_srv FOREIGN DATA WRAPPER parquet_s3_fdw;

如果要使用 MinIO 而不是 AWS S3,請使用 use_minio 選項創建服務器。dJe28資訊網——每日最新資訊28at.com

CREATE SERVER parquet_s3_srv FOREIGN DATA WRAPPER parquet_s3_fdw OPTIONS (use_minio 'true');

創建用戶映射

如果要訪問 Amazon S3,則必須指定用戶名和密碼。dJe28資訊網——每日最新資訊28at.com

CREATE USER MAPPING FOR public SERVER parquet_s3_srv OPTIONS (user 's3user', password 's3password');

創建外表

現在你應該能夠從 Parquet 文件創建外表了。目前parquet_s3_fdw支持下面這些數據列類型(還將會增加):dJe28資訊網——每日最新資訊28at.com

Arrow 類型
dJe28資訊網——每日最新資訊28at.com

SQL 類型
dJe28資訊網——每日最新資訊28at.com

INT8
dJe28資訊網——每日最新資訊28at.com

INT2
dJe28資訊網——每日最新資訊28at.com

INT16
dJe28資訊網——每日最新資訊28at.com

INT2
dJe28資訊網——每日最新資訊28at.com

INT32
dJe28資訊網——每日最新資訊28at.com

INT4
dJe28資訊網——每日最新資訊28at.com

INT64
dJe28資訊網——每日最新資訊28at.com

INT8
dJe28資訊網——每日最新資訊28at.com

FLOAT
dJe28資訊網——每日最新資訊28at.com

FLOAT4
dJe28資訊網——每日最新資訊28at.com

DOUBLE
dJe28資訊網——每日最新資訊28at.com

FLOAT8
dJe28資訊網——每日最新資訊28at.com

TIMESTAMP
dJe28資訊網——每日最新資訊28at.com

TIMESTAMP
dJe28資訊網——每日最新資訊28at.com

DATE32
dJe28資訊網——每日最新資訊28at.com

DATE
dJe28資訊網——每日最新資訊28at.com

STRING
dJe28資訊網——每日最新資訊28at.com

TEXT
dJe28資訊網——每日最新資訊28at.com

BINARY
dJe28資訊網——每日最新資訊28at.com

BYTEA
dJe28資訊網——每日最新資訊28at.com

LIST
dJe28資訊網——每日最新資訊28at.com

ARRAY
dJe28資訊網——每日最新資訊28at.com

MAP
dJe28資訊網——每日最新資訊28at.com

JSONB
dJe28資訊網——每日最新資訊28at.com

目前parquet_s3_fdw不支持結構體和嵌套列表。dJe28資訊網——每日最新資訊28at.com

支持以下選項:dJe28資訊網——每日最新資訊28at.com

? filename - 要讀取的 Parquet 文件的路徑列表,以空格分隔。您可以用s3://開始來指定 AWS S3 上的路徑。不支持混合使用本地路徑和 S3 路徑;dJe28資訊網——每日最新資訊28at.com

? dirname - 具有要讀取的 Parquet 文件的目錄路徑;dJe28資訊網——每日最新資訊28at.com

? sorted - 用來預排序 Parquet 文件的,空格分隔的列列表;當使用ORDER BY子句運行查詢,或在其他情況下帶有預排序的列集會有用(Group Aggregate,Merge Join)時,這將有助于 postgres 避免冗余的排序;dJe28資訊網——每日最新資訊28at.com

? files_in_order - 要求以filename指定或由files_func返回的文件,根據sorted選項進行排序,并且在范圍上沒有交叉;這允許在并行多文件掃描節點上使用Gather Merge節點(默認值為false);dJe28資訊網——每日最新資訊28at.com

? use_mmap - 是否使用內存映射操作,而不是文件讀取操作(默認值為false);dJe28資訊網——每日最新資訊28at.com

? use_threads - 啟用 Apache Arrow 的并行列解碼/解壓(默認值為false);dJe28資訊網——每日最新資訊28at.com

? files_func - 用戶定義的函數,由 parquet_s3_fdw 在每次查詢時用于檢索 parquet 文件列表;函數必須接受一個JSONB參數,并返回 parquet 文件完整路徑的文本數組;dJe28資訊網——每日最新資訊28at.com

? files_func_arg - 由 files_func 指定的函數的參數。dJe28資訊網——每日最新資訊28at.com

? max_open_files - 同時打開的 Parquet 文件的數量限制。dJe28資訊網——每日最新資訊28at.com

? region - 用于連接到的 AWS 區域的值(默認值為ap-northeast-1)。dJe28資訊網——每日最新資訊28at.com

? endpoint - 用于連接的地址和端口(默認值為127.0.0.1:9000)。dJe28資訊網——每日最新資訊28at.com

可以為單個和一組 Parquet 文件創建外部表。也可以指定一個用戶定義的函數,該函數會返回一個文件路徑列表。根據文件數量和表選項,parquet_s3_fdw可以使用以下的一種執行策略:dJe28資訊網——每日最新資訊28at.com

策略
dJe28資訊網——每日最新資訊28at.com

描述
dJe28資訊網——每日最新資訊28at.com

Single FiledJe28資訊網——每日最新資訊28at.com

基本的單文件讀取器
dJe28資訊網——每日最新資訊28at.com

MultifiledJe28資訊網——每日最新資訊28at.com

按順序逐個處理 Parquet 文件的讀取器
dJe28資訊網——每日最新資訊28at.com

Multifile MergedJe28資訊網——每日最新資訊28at.com

該讀取器會合并預排序的 Parquet 文件,以便生成的結果也是有序的;在指定了sorted選項,并且查詢計劃需要排序(例如包含了ORDER BY子句)時會使用dJe28資訊網——每日最新資訊28at.com

Caching Multifile MergedJe28資訊網——每日最新資訊28at.com

Multifile Merge相同,但會限制同時打開的文件數;當指定的 Parquet 文件數超過max_open_files時會使用dJe28資訊網——每日最新資訊28at.com

GUC 變量:dJe28資訊網——每日最新資訊28at.com

? parquet_fdw.use_threads - 允許用戶啟用或禁用線程的全局開關(默認值為true);dJe28資訊網——每日最新資訊28at.com

? parquet_fdw.enable_multifile - 啟用多文件讀取器(默認值為true)。dJe28資訊網——每日最新資訊28at.com

? parquet_fdw.enable_multifile_merge - 啟用多文件合并讀取器(默認值為true)。dJe28資訊網——每日最新資訊28at.com

示例:dJe28資訊網——每日最新資訊28at.com

CREATE FOREIGN TABLE userdata (    id           int,    first_name   text,    last_name    text)SERVER parquet_s3_srvOPTIONS (    filename 's3://bucket/dir/userdata1.parquet');

訪問外表

SELECT * FROM userdata;

并行查詢

parquet_s3_fdw還支持并行查詢執行(注意不要與 Apache Arrow 的多線程解碼功能混淆)。dJe28資訊網——每日最新資訊28at.com

導入

parquet_s3_fdw還支持 IMPORT FOREIGN SCHEMA 命令,來發現文件系統上指定目錄中的 parquet 文件,并根據這些文件創建外部表。它可以像這樣使用:dJe28資訊網——每日最新資訊28at.com

IMPORT FOREIGN SCHEMA "/path/to/directory"FROM SERVER parquet_s3_srvINTO public;

重要的是,這里的remote_schema是一個本地文件系統的目錄路徑,并且用雙引號引起來。dJe28資訊網——每日最新資訊28at.com

將 parquet 文件導入到外部表的另一種方法是,使用import_parquet_s3或import_parquet_s3_explicit:dJe28資訊網——每日最新資訊28at.com

CREATE FUNCTION import_parquet_s3(    tablename   text,    schemaname  text,    servername  text,    userfunc    regproc,    args        jsonb,    options     jsonb)CREATE FUNCTION import_parquet_s3_explicit(    tablename   text,    schemaname  text,    servername  text,    attnames    text[],    atttypes    regtype[],    userfunc    regproc,    args        jsonb,    options     jsonb)

import_parquet_s3和import_parquet_s3_explicit之間的唯一區別是,后者允許指定一組要導入的屬性/列。attnames和atttypes分別是屬性名稱和屬性類型的數組(參見下面的示例)。dJe28資訊網——每日最新資訊28at.com

userfunc是一個用戶自定義函數。它必須接受一個jsonb參數,并返回一個要導入的 parquet 文件的文件系統路徑的文本數組。args是用戶指定的 jsonb 對象,以作為參數傳遞給userfunc。這種函數的簡單實現和用法,可以如下面這樣:dJe28資訊網——每日最新資訊28at.com

CREATE FUNCTION list_parquet_s3_files(args jsonb)RETURNS text[] AS$$BEGIN    RETURN array_agg(args->>'dir' || '/' || filename)           FROM pg_ls_dir(args->>'dir') AS files(filename)           WHERE filename ~~ '%.parquet';END$$LANGUAGE plpgsql;SELECT import_parquet_s3_explicit(    'abc',    'public',    'parquet_srv',    array['one', 'three', 'six'],    array['int8', 'text', 'bool']::regtype[],    'list_parquet_files',    '{"dir": "/path/to/directory"}',    '{"sorted": "one"}');

特性

? 支持在本地文件系統或 Amazon S3 上對 parquet 文件進行 SELECT 操作。dJe28資訊網——每日最新資訊28at.com

? 支持 INSERT、DELETE、UPDATE(外部修改)。dJe28資訊網——每日最新資訊28at.com

? 支持 MinIO 訪問,以替代 Amazon S3。dJe28資訊網——每日最新資訊28at.com

? 允許控制外部服務器在事務完成后是否保持連接打開狀態。這由 keep_connections 控制,默認為 on。dJe28資訊網——每日最新資訊28at.com

? 支持 parquet_s3_fdw 的 parquet_s3_fdw_get_connections() 函數,列出打開的外部服務器連接。dJe28資訊網——每日最新資訊28at.com

無結構模式

? 該功能將使用戶能夠使用無結構的能力:dJe28資訊網——每日最新資訊28at.com

 ?Jsonb 鍵:parquet 列名稱。dJe28資訊網——每日最新資訊28at.com

? Jsonb 值:parquet 列數據。dJe28資訊網——每日最新資訊28at.com

? 每個 parquet 文件沒有特定的外部表結構(列定義)。dJe28資訊網——每日最新資訊28at.com

? 無結構的外表只有一個 jsonb 列,用于根據以下規則表示 parquet 文件中的數據:dJe28資訊網——每日最新資訊28at.com

使用無結構模式,會有幾個好處:dJe28資訊網——每日最新資訊28at.com

? parquet 文件數據結構的靈活性:通過將所有列數據合并到一個 jsonb 列中,無結構的外表可以查詢任何 parquet 文件,文件中的所有列都能映射到 postgres 類型。dJe28資訊網——每日最新資訊28at.com

? 沒有預定義的外部表結構(列定義)。缺少結構意味著外部表會查詢 parquet 文件中的所有列,包括用戶還未使用的列。dJe28資訊網——每日最新資訊28at.com

無結構模式用法

? 無結構模式由schemaless選項來啟用:dJe28資訊網——每日最新資訊28at.com

? schemaless選項是true:啟用無結構模式。dJe28資訊網——每日最新資訊28at.com

? schemaless選項是false:禁用無結構模式(我們稱之為non-schemaless模式)。dJe28資訊網——每日最新資訊28at.com

? 如果未配置schemaless選項,則默認值為 false。dJe28資訊網——每日最新資訊28at.com

? CREATE FOREIGN TABLE、IMPORT FOREIGN SCHEMA、import_parquet_s3()和import_parquet_s3_explicit()中均支持schemaless選項。dJe28資訊網——每日最新資訊28at.com

? 無結構外表需要至少一個 jsonb 列來表示數據:dJe28資訊網——每日最新資訊28at.com

CREATE FOREIGN TABLE example_schemaless (  id int,  v jsonb) OPTIONS (filename '/path/to/parquet_file', schemaless 'true');SELECT * FROM example_schemaless;id |                                                                v----+---------------------------------------------------------------------------------------------------------------------------------    | {"one": 1, "six": "t", "two": [1, 2, 3], "five": "2018-01-01", "four": "2018-01-01 00:00:00", "seven": 0.5, "three": "foo"}    | {"one": 2, "six": "f", "two": [null, 5, 6], "five": "2018-01-02", "four": "2018-01-02 00:00:00", "seven": null, "three": "bar"}(2 rows)

? 如果有 1 個以上的 jsonb 列,則僅填充一列,所有其他列都使用 NULL 值處理。dJe28資訊網——每日最新資訊28at.com

? 如果沒有 jsonb 列,則所有列都使用 NULL 值處理。dJe28資訊網——每日最新資訊28at.com

? 示例:dJe28資訊網——每日最新資訊28at.com

? 創建外部表:使用IMPORT FOREIGN SCHEMA,import_parquet_s3()和import_parquet_s3_explicit(),外部表將以固定的列定義進行創建,如下所示:

CREATE FOREIGN TABLE example (  v jsonb) OPTIONS (filename '/path/to/parquet_file', schemaless 'true');
dJe28資訊網——每日最新資訊28at.com

? 查詢數據:

-- non-schemaless modeSELECT * FROM example; one |    two     | three |        four         |    five    | six | seven-----+------------+-------+---------------------+------------+-----+-------   1 | {1,2,3}    | foo   | 2018-01-01 00:00:00 | 2018-01-01 | t   |   0.5   2 | {NULL,5,6} | bar   | 2018-01-02 00:00:00 | 2018-01-02 | f   |(2 rows)-- schemaless modeSELECT * FROM example_schemaless;                                                                  v--------------------------------------------------------------------------------------------------------------------------------- {"one": 1, "six": "t", "two": [1, 2, 3], "five": "2018-01-01", "four": "2018-01-01 00:00:00", "seven": 0.5, "three": "foo"} {"one": 2, "six": "f", "two": [null, 5, 6], "five": "2018-01-02", "four": "2018-01-02 00:00:00", "seven": null, "three": "bar"}(2 rows)
dJe28資訊網——每日最新資訊28at.com

? 在 jsonb 表達式中獲取值:dJe28資訊網——每日最新資訊28at.com

? 使用 ->> jsonb 箭頭操作符,返回文本類型。用戶可以強制轉換 jsonb 表達式的類型,以獲得相應的數據表示。dJe28資訊網——每日最新資訊28at.com

? 例如,獲取col值的表達式v->>'col',將是 parquet 文件中的列名col,我們稱之為schemaless variable或slvar。

SELECT v->>'two', sqrt((v->>'one')::int) FROM example_schemaless;  ?column?   |        sqrt--------------+--------------------[1, 2, 3]    |                  1[null, 5, 6] | 1.4142135623730951(2 rows)
dJe28資訊網——每日最新資訊28at.com

? 某些功能與non-schemaless模式不同dJe28資訊網——每日最新資訊28at.com

? 在sorted選項中定義列名,與non-schemaless mode相同dJe28資訊網——每日最新資訊28at.com

? 在ORDER BY子句中使用slvar代替列名。dJe28資訊網——每日最新資訊28at.com

? 如果排序的 parquet 列不是文本列,請將此列顯式地強制轉換到映射類型。dJe28資訊網——每日最新資訊28at.com

? 例如:

CREATE FOREIGN TABLE example_sorted (v jsonb)SERVER parquet_s3_srvOPTIONS (filename '/path/to/example1.parquet /path/to/example2.parquet', sorted 'int64_col', schemaless 'true');EXPLAIN (COSTS OFF) SELECT * FROM example_sorted ORDER BY (v->>'int64_col')::int8;          QUERY PLAN--------------------------------Foreign Scan on example_sorted  Reader: Multifile Merge  Row groups:    example1.parquet: 1, 2    example2.parquet: 1(5 rows)
dJe28資訊網——每日最新資訊28at.com

? slvar::type {operator} const。例如:(v->>'int64_col')::int8 = 100dJe28資訊網——每日最新資訊28at.com

? const {operator} slvar ::type。例如:100 = (v->>'int64_col')::int8dJe28資訊網——每日最新資訊28at.com

? slvar::boolean is true/false。例如:(v->>'bool_col')::boolean is falsedJe28資訊網——每日最新資訊28at.com

? !(slvar::boolean)。例如:!(v->>'bool_col')::booleandJe28資訊網——每日最新資訊28at.com

? Jsonb exist 運算符:((v->>'col')::jsonb) ? element、(v->'col') ? element和v ? 'col'dJe28資訊網——每日最新資訊28at.com

? 轉換函數必須映射 parquet 列類型,否則會跳過過濾器。dJe28資訊網——每日最新資訊28at.com

? 行組過濾器支持:在無結構模式下,parquet_s3_fdw 可以通過一些如下的WHERE條件,支持對行組進行過濾:dJe28資訊網——每日最新資訊28at.com

? 要使用 parquet 文件的預排序列,用戶必須是:dJe28資訊網——每日最新資訊28at.com

? 支持對嵌套列表和映射表使用箭頭運算符:這些類型將被視為嵌套的 jsonb 值,可以通過->操作符訪問。例如:

SELECT * FROM example_schemaless;                                  v----------------------------------------------------------------------------{"array_col": [19, 20], "jsonb_col": {"1": "foo", "2": "bar", "3": "baz"}}{"array_col": [21, 22], "jsonb_col": {"4": "test1", "5": "test2"}}(2 rows)SELECT v->'array_col'->1, v->'jsonb_col'->'1' FROM example3;?column? | ?column?----------+----------20       | "foo"22       |(2 rows)
dJe28資訊網——每日最新資訊28at.com

? Postgres 計算(jsonb->>'col')::type的成本,比在non-schemaless模式下直接獲取列要大得多,在一些復雜的查詢中,schemaless模式的查詢計劃可能與non-schemaless模式不同。dJe28資訊網——每日最新資訊28at.com

? 對于其他功能,schemaless模式與non-schemaless模式工作相同。dJe28資訊網——每日最新資訊28at.com

可寫的 FDW

用戶可以對已設置鍵列的外表,執行 insert、update 和 delete 語句。dJe28資訊網——每日最新資訊28at.com

鍵列

? 在結構化模式下:可以通過使用 OPTIONS (key 'true') 創建 parquet_s3_fdw 外表對象,來設置鍵列:dJe28資訊網——每日最新資訊28at.com

CREATE FOREIGN TABLE userdata (    id1          int OPTIONS(key 'true'),    id2          int OPTIONS(key 'true'),    first_name   text,    last_name    text) SERVER parquet_s3_srvOPTIONS (    filename 's3://bucket/dir/userdata1.parquet');

? 在無結構模式下,可以在創建 parquet_s3_fdw 外部表對象時,使用key_columns選項設置鍵列:dJe28資訊網——每日最新資訊28at.com

CREATE FOREIGN TABLE userdata (    v JSONB) SERVER parquet_s3_srvOPTIONS (    filename 's3://bucket/dir/userdata1.parquet',    schemaless 'true',    key_columns 'id1 id2');

? key_columns選項可用于 IMPORT FOREIGN SCHEMA 功能:dJe28資訊網——每日最新資訊28at.com

-- in schemaless modeIMPORT FOREIGN SCHEMA 's3://data/' FROM SERVER parquet_s3_srv INTO tmp_schemaOPTIONS (sorted 'c1', schemaless 'true', key_columns 'id1 id2');-- corresponding CREATE FOREIGN TABLECREATE FOREIGN TABLE tbl1 (      v jsonb) SERVER parquet_s3_srvOPTIONS (filename 's3://data/tbl1.parquet', sorted 'c1', schemaless 'true', key_columns 'id1 id2');-- in non-schemaless modeIMPORT FOREIGN SCHEMA 's3://data/' FROM SERVER parquet_s3_srv INTO tmp_schemaOPTIONS (sorted 'c1', schemaless 'true', key_columns 'id1 id2');-- corresponding CREATE FOREIGN TABLECREATE FOREIGN TABLE tbl1 (      id1 INT OPTIONS (key 'true'),      id2 INT OPTIONS (key 'true'),      c1  TEXT,      c2  FLOAT) SERVER parquet_s3_srvOPTIONS (filename 's3://data/tbl1.parquet', sorted 'c1');

insert_file_selector 選項

parquet_s3_fdw 用來在 INSERT 查詢中檢索目標 parquet 文件的用戶定義函數簽名:dJe28資訊網——每日最新資訊28at.com

CREATE FUNCTION insert_file_selector_func(one INT8, dirname text)RETURNS TEXT AS$$    SELECT (dirname || '/example7.parquet')::TEXT;$$LANGUAGE SQL;CREATE FOREIGN TABLE example_func (one INT8 OPTIONS (key 'true'), two TEXT)SERVER parquet_s3_srvOPTIONS (    insert_file_selector 'insert_file_selector_func(one, dirname)',    dirname '/tmp/data_local/data/test',    sorted 'one');

? insert_file_selector 函數簽名規格:dJe28資訊網——每日最新資訊28at.com

? dirname arg:dirname 選項的值。dJe28資訊網——每日最新資訊28at.com

? column args:按名稱從插入槽位中獲取。dJe28資訊網——每日最新資訊28at.com

? 語法:[function name]([arg name] , [arg name] ...)dJe28資訊網——每日最新資訊28at.com

? 默認返回類型為TEXT(parquet 文件的完整路徑)dJe28資訊網——每日最新資訊28at.com

? [arg name]:必須是外部表的列名或dirnamedJe28資訊網——每日最新資訊28at.com

? args 值:dJe28資訊網——每日最新資訊28at.com

排序列:

parquet_s3_fdw 支持在修改功能中保持排序列的排序狀態。dJe28資訊網——每日最新資訊28at.com

Parquet 文件結構:

基本上,parquet 文件結構是根據一組列名和相應的類型定義的,但在 parquet_s3_fdw 的掃描中,它假定所有具有相同名稱的列都具有相同的類型。因此,在修改功能中,也會使用該假設。dJe28資訊網——每日最新資訊28at.com

從 postgres 類型到 arrow 類型的映射:

  • ? 基礎類型映射:

SQL 類型
dJe28資訊網——每日最新資訊28at.com

Arrow 類型
dJe28資訊網——每日最新資訊28at.com

BOOL
dJe28資訊網——每日最新資訊28at.com

BOOL
dJe28資訊網——每日最新資訊28at.com

INT2
dJe28資訊網——每日最新資訊28at.com

INT16
dJe28資訊網——每日最新資訊28at.com

INT4
dJe28資訊網——每日最新資訊28at.com

INT32
dJe28資訊網——每日最新資訊28at.com

INT8
dJe28資訊網——每日最新資訊28at.com

INT64
dJe28資訊網——每日最新資訊28at.com

FLOAT4
dJe28資訊網——每日最新資訊28at.com

FLOAT
dJe28資訊網——每日最新資訊28at.com

FLOAT8
dJe28資訊網——每日最新資訊28at.com

DOUBLE
dJe28資訊網——每日最新資訊28at.com

TIMESTAMP/TIMESTAMPTZ
dJe28資訊網——每日最新資訊28at.com

TIMESTAMP
dJe28資訊網——每日最新資訊28at.com

DATE
dJe28資訊網——每日最新資訊28at.com

DATE32
dJe28資訊網——每日最新資訊28at.com

TEXT
dJe28資訊網——每日最新資訊28at.com

STRING
dJe28資訊網——每日最新資訊28at.com

BYTEA
dJe28資訊網——每日最新資訊28at.com

BINARY
dJe28資訊網——每日最新資訊28at.com

? arrow::TIMESTAMP 的默認時間精度為 UTC 時區的微秒級。dJe28資訊網——每日最新資訊28at.com

? LIST 是由它的元素類型創建的,對于元素只支持基礎類型。dJe28資訊網——每日最新資訊28at.com

? MAP 由其 jsonb 元素的類型來創建的:dJe28資訊網——每日最新資訊28at.com

jsonb 類型
dJe28資訊網——每日最新資訊28at.com

Arrow 類型
dJe28資訊網——每日最新資訊28at.com

text
dJe28資訊網——每日最新資訊28at.com

STRING
dJe28資訊網——每日最新資訊28at.com

numeric
dJe28資訊網——每日最新資訊28at.com

FLOAT8
dJe28資訊網——每日最新資訊28at.com

boolean
dJe28資訊網——每日最新資訊28at.com

BOOL
dJe28資訊網——每日最新資訊28at.com

null
dJe28資訊網——每日最新資訊28at.com

STRING
dJe28資訊網——每日最新資訊28at.com

其他類型
dJe28資訊網——每日最新資訊28at.com

STRING
dJe28資訊網——每日最新資訊28at.com

? 在無結構模式下:dJe28資訊網——每日最新資訊28at.com

? 在結構化模式下,基礎的 jsonb 類型的映射與 MAP 相同。dJe28資訊網——每日最新資訊28at.com

? 對于無結構模式下的第一個嵌套的 jsonb:dJe28資訊網——每日最新資訊28at.com

jsonb 類型
dJe28資訊網——每日最新資訊28at.com

Arrow 類型
dJe28資訊網——每日最新資訊28at.com

array
dJe28資訊網——每日最新資訊28at.com

LIST
dJe28資訊網——每日最新資訊28at.com

object
dJe28資訊網——每日最新資訊28at.com

MAP
dJe28資訊網——每日最新資訊28at.com

? 在結構化模式下,LIST 和 MAP 的元素類型與 MAP 類型相同。dJe28資訊網——每日最新資訊28at.com

INSERT

-- non-schemaless modeCREATE FOREIGN TABLE example_insert (    c1 INT2 OPTIONS (key 'true'),    c2 TEXT,    c3 BOOLEAN) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example_insert.parquet');INSERT INTO example_insert VALUES (1, 'text1', true), (2, DEFAULT, false), ((select 3), (select i from (values('values are fun!')) as foo (i)), true);INSERT 0 3SELECT * FROM example_insert; c1 |       c2        | c3----+-----------------+----  1 | text1           | t  2 |                 | f  3 | values are fun! | t(3 rows)-- schemaless modeCREATE FOREIGN TABLE example_insert_schemaless (    v JSONB) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example_insert.parquet', schemaless 'true', key_column 'c1');INSERT INTO example_insert_schemaless VALUES ('{"c1": 1, "c2": "text1", "c3": true}'), ('{"c1": 2, "c2": null, "c3": false}'), ('{"c1": 3, "c2": "values are fun!", "c3": true}');SELECT * FROM example_insert_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "t"} {"c1": 2, "c2": null, "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(3 rows)

? 選擇要插入的文件:dJe28資訊網——每日最新資訊28at.com

? 目標文件是第一個其結構與插入記錄匹配(插入記錄的所有列都存在于目標文件中)的文件。dJe28資訊網——每日最新資訊28at.com

? 如果沒有符合其結構的文件與插入記錄的列匹配,并且已指定dirname選項。創建新文件,文件名格式為:[foreign_table_name]_[date_time].parquetdJe28資訊網——每日最新資訊28at.com

? 否則,會引發錯誤消息。dJe28資訊網——每日最新資訊28at.com

? 如果目標文件不存在,則創建與目標文件同名的新文件。dJe28資訊網——每日最新資訊28at.com

? 如果目標文件存在,但其結構與插入記錄的列不匹配,則會引發錯誤消息。dJe28資訊網——每日最新資訊28at.com

? 如果存在選項insert_file_selector,目標文件就是該函數的結果。dJe28資訊網——每日最新資訊28at.com

? 如果選項insert_file_selector不存在:dJe28資訊網——每日最新資訊28at.com

? 新文件的結構:dJe28資訊網——每日最新資訊28at.com

? 從現有文件列表中獲取。dJe28資訊網——每日最新資訊28at.com

? 如果在任何文件中都不存在列:根據預定義的映射類型創建基礎文件。dJe28資訊網——每日最新資訊28at.com

? 在結構化模式下,新文件將所有列都存在于外部表中。dJe28資訊網——每日最新資訊28at.com

? 在無結構模式下,新文件將在 jsonb 值中帶上所有列。dJe28資訊網——每日最新資訊28at.com

? 列信息:dJe28資訊網——每日最新資訊28at.com

UPDATE/DELETE

-- non-schemaless modeCREATE FOREIGN TABLE example (    c1 INT2 OPTIONS (key 'true'),    c2 TEXT,    c3 BOOLEAN) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example.parquet');SELECT * FROM example; c1 |       c2        | c3----+-----------------+----  1 | text1           | t  2 |                 | f  3 | values are fun! | t(3 rows)UPDATE example SET c3 = false WHERE c2 = 'text1';UPDATE 1SELECT * FROM example; c1 |       c2        | c3----+-----------------+----  1 | text1           | f  2 |                 | f  3 | values are fun! | t(3 rows)DELETE FROM example WHERE c1 = 2;DELETE 1SELECT * FROM example; c1 |       c2        | c3----+-----------------+----  1 | text1           | f  3 | values are fun! | t(2 rows)-- schemaless modeCREATE FOREIGN TABLE example_schemaless (    v JSONB) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example.parquet', schemaless 'true', key_columns 'c1');SELECT * FROM example_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "t"} {"c1": 2, "c2": null, "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(3 rows)UPDATE example_schemaless SET v='{"c3":false}' WHERE v->>'c2' = 'text1';UPDATE 1SELECT * FROM example_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "f"} {"c1": 2, "c2": null, "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(3 rows)DELETE FROM example_schemaless WHERE (v->>'c1')::int = 2;DELETE 1SELECT * FROM example_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(2 rows)

限制

? 不支持事務。dJe28資訊網——每日最新資訊28at.com

? 無法同時在文件系統和 Amazon S3 上使用 parquet 文件創建單個外部表。dJe28資訊網——每日最新資訊28at.com

? import_parquet_s3_explicit()函數的第 4 和第 5 個參數,在schemaless模式下沒有意義。dJe28資訊網——每日最新資訊28at.com

WARNING: parquet_s3_fdw: attnames and atttypes are expected to be NULL. They are meaningless for schemaless table.HINT: Schemaless table imported always contain "v" column with "jsonb" type.

? 這些參數應該定義為NULL值。dJe28資訊網——每日最新資訊28at.com

? 如果這些參數不是 NULL 值,則會出現下面的WARNING:dJe28資訊網——每日最新資訊28at.com

? schemaless模式不支持通過CREATE TABLE parent_tbl (v jsonb) PARTITION BY RANGE((v->>'a')::int)創建分區表。dJe28資訊網——每日最新資訊28at.com

? 在修改功能中:dJe28資訊網——每日最新資訊28at.com

? 對于大文件,性能不太好。dJe28資訊網——每日最新資訊28at.com

? 當完全相同的文件同時修改時,結果會出現不一致。dJe28資訊網——每日最新資訊28at.com

? parquet_s3_fdw修改 parquet 文件的方法是,從目標 parquet 文件創建可修改的緩存數據,并覆蓋舊文件:dJe28資訊網——每日最新資訊28at.com

? 不支持 WITH CHECK OPTION、ON CONFLICT 和 RETURNING。dJe28資訊網——每日最新資訊28at.com

? sorted列僅支持這些類型:int2、int4、int8、date、timestamp、float4、float8。dJe28資訊網——每日最新資訊28at.com

? key列僅支持這些類型:int2、int4、int8、date、timestamp、float4、float8和text。dJe28資訊網——每日最新資訊28at.com

? key列的值必須是唯一的,parquet_s3_fdw不支持檢查鍵列的唯一值,用戶必須做好檢查。dJe28資訊網——每日最新資訊28at.com

? key列僅用于 UPDATE/UPDATE。dJe28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-88730-0.htmlOracle 數據量 150T,PostgreSQL 能搞定嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 零基礎入門:使用Python pyWinAuto自動化你的Windows任務

下一篇: SpringBoot項目中這十個開發技巧,你都知道嗎?

標簽:
  • 熱門焦點
Top