日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Oracle 數(shù)據(jù)量 150T,PostgreSQL 能搞定嗎?

來源: 責(zé)編: 時(shí)間:2024-05-16 17:45:15 212觀看
導(dǎo)讀此版本的 parquet_s3_fdw 適用于 PostgreSQL 13、14、15 和 16。只讀模式下的 Apache Parquet 外部數(shù)據(jù)包裝器,支持 PostgreSQL 訪問 S3 存儲(chǔ)。用法加載擴(kuò)展CREATE EXTENSION parquet_s3_fdw;創(chuàng)建服務(wù)器CREATE SERVER

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

只讀模式下的 Apache Parquet 外部數(shù)據(jù)包裝器,支持 PostgreSQL 訪問 S3 存儲(chǔ)。NHp28資訊網(wǎng)——每日最新資訊28at.com

用法

加載擴(kuò)展

CREATE EXTENSION parquet_s3_fdw;

創(chuàng)建服務(wù)器

CREATE SERVER parquet_s3_srv FOREIGN DATA WRAPPER parquet_s3_fdw;

如果要使用 MinIO 而不是 AWS S3,請使用 use_minio 選項(xiàng)創(chuàng)建服務(wù)器。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

創(chuàng)建用戶映射

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

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

創(chuàng)建外表

現(xiàn)在你應(yīng)該能夠從 Parquet 文件創(chuàng)建外表了。目前parquet_s3_fdw支持下面這些數(shù)據(jù)列類型(還將會(huì)增加):NHp28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

SQL 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT8
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT2
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT16
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT2
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT32
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT4
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT64
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT8
NHp28資訊網(wǎng)——每日最新資訊28at.com

FLOAT
NHp28資訊網(wǎng)——每日最新資訊28at.com

FLOAT4
NHp28資訊網(wǎng)——每日最新資訊28at.com

DOUBLE
NHp28資訊網(wǎng)——每日最新資訊28at.com

FLOAT8
NHp28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP
NHp28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP
NHp28資訊網(wǎng)——每日最新資訊28at.com

DATE32
NHp28資訊網(wǎng)——每日最新資訊28at.com

DATE
NHp28資訊網(wǎng)——每日最新資訊28at.com

STRING
NHp28資訊網(wǎng)——每日最新資訊28at.com

TEXT
NHp28資訊網(wǎng)——每日最新資訊28at.com

BINARY
NHp28資訊網(wǎng)——每日最新資訊28at.com

BYTEA
NHp28資訊網(wǎng)——每日最新資訊28at.com

LIST
NHp28資訊網(wǎng)——每日最新資訊28at.com

ARRAY
NHp28資訊網(wǎng)——每日最新資訊28at.com

MAP
NHp28資訊網(wǎng)——每日最新資訊28at.com

JSONB
NHp28資訊網(wǎng)——每日最新資訊28at.com

目前parquet_s3_fdw不支持結(jié)構(gòu)體和嵌套列表。NHp28資訊網(wǎng)——每日最新資訊28at.com

支持以下選項(xiàng):NHp28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

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

? files_func_arg - 由 files_func 指定的函數(shù)的參數(shù)。NHp28資訊網(wǎng)——每日最新資訊28at.com

? max_open_files - 同時(shí)打開的 Parquet 文件的數(shù)量限制。NHp28資訊網(wǎng)——每日最新資訊28at.com

? region - 用于連接到的 AWS 區(qū)域的值(默認(rèn)值為ap-northeast-1)。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

可以為單個(gè)和一組 Parquet 文件創(chuàng)建外部表。也可以指定一個(gè)用戶定義的函數(shù),該函數(shù)會(huì)返回一個(gè)文件路徑列表。根據(jù)文件數(shù)量和表選項(xiàng),parquet_s3_fdw可以使用以下的一種執(zhí)行策略:NHp28資訊網(wǎng)——每日最新資訊28at.com

策略
NHp28資訊網(wǎng)——每日最新資訊28at.com

描述
NHp28資訊網(wǎng)——每日最新資訊28at.com

Single FileNHp28資訊網(wǎng)——每日最新資訊28at.com

基本的單文件讀取器
NHp28資訊網(wǎng)——每日最新資訊28at.com

MultifileNHp28資訊網(wǎng)——每日最新資訊28at.com

按順序逐個(gè)處理 Parquet 文件的讀取器
NHp28資訊網(wǎng)——每日最新資訊28at.com

Multifile MergeNHp28資訊網(wǎng)——每日最新資訊28at.com

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

Caching Multifile MergeNHp28資訊網(wǎng)——每日最新資訊28at.com

Multifile Merge相同,但會(huì)限制同時(shí)打開的文件數(shù);當(dāng)指定的 Parquet 文件數(shù)超過max_open_files時(shí)會(huì)使用NHp28資訊網(wǎng)——每日最新資訊28at.com

GUC 變量:NHp28資訊網(wǎng)——每日最新資訊28at.com

? parquet_fdw.use_threads - 允許用戶啟用或禁用線程的全局開關(guān)(默認(rèn)值為true);NHp28資訊網(wǎng)——每日最新資訊28at.com

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

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

示例:NHp28資訊網(wǎng)——每日最新資訊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還支持并行查詢執(zhí)行(注意不要與 Apache Arrow 的多線程解碼功能混淆)。NHp28資訊網(wǎng)——每日最新資訊28at.com

導(dǎo)入

parquet_s3_fdw還支持 IMPORT FOREIGN SCHEMA 命令,來發(fā)現(xiàn)文件系統(tǒng)上指定目錄中的 parquet 文件,并根據(jù)這些文件創(chuàng)建外部表。它可以像這樣使用:NHp28資訊網(wǎng)——每日最新資訊28at.com

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

重要的是,這里的remote_schema是一個(gè)本地文件系統(tǒng)的目錄路徑,并且用雙引號(hào)引起來。NHp28資訊網(wǎng)——每日最新資訊28at.com

將 parquet 文件導(dǎo)入到外部表的另一種方法是,使用import_parquet_s3或import_parquet_s3_explicit:NHp28資訊網(wǎng)——每日最新資訊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之間的唯一區(qū)別是,后者允許指定一組要導(dǎo)入的屬性/列。attnames和atttypes分別是屬性名稱和屬性類型的數(shù)組(參見下面的示例)。NHp28資訊網(wǎng)——每日最新資訊28at.com

userfunc是一個(gè)用戶自定義函數(shù)。它必須接受一個(gè)jsonb參數(shù),并返回一個(gè)要導(dǎo)入的 parquet 文件的文件系統(tǒng)路徑的文本數(shù)組。args是用戶指定的 jsonb 對象,以作為參數(shù)傳遞給userfunc。這種函數(shù)的簡單實(shí)現(xiàn)和用法,可以如下面這樣:NHp28資訊網(wǎng)——每日最新資訊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"}');

特性

? 支持在本地文件系統(tǒng)或 Amazon S3 上對 parquet 文件進(jìn)行 SELECT 操作。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

? 支持 MinIO 訪問,以替代 Amazon S3。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 允許控制外部服務(wù)器在事務(wù)完成后是否保持連接打開狀態(tài)。這由 keep_connections 控制,默認(rèn)為 on。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

無結(jié)構(gòu)模式

? 該功能將使用戶能夠使用無結(jié)構(gòu)的能力:NHp28資訊網(wǎng)——每日最新資訊28at.com

 ?Jsonb 鍵:parquet 列名稱。NHp28資訊網(wǎng)——每日最新資訊28at.com

? Jsonb 值:parquet 列數(shù)據(jù)。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 每個(gè) parquet 文件沒有特定的外部表結(jié)構(gòu)(列定義)。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 無結(jié)構(gòu)的外表只有一個(gè) jsonb 列,用于根據(jù)以下規(guī)則表示 parquet 文件中的數(shù)據(jù):NHp28資訊網(wǎng)——每日最新資訊28at.com

使用無結(jié)構(gòu)模式,會(huì)有幾個(gè)好處:NHp28資訊網(wǎng)——每日最新資訊28at.com

? parquet 文件數(shù)據(jù)結(jié)構(gòu)的靈活性:通過將所有列數(shù)據(jù)合并到一個(gè) jsonb 列中,無結(jié)構(gòu)的外表可以查詢?nèi)魏?parquet 文件,文件中的所有列都能映射到 postgres 類型。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 沒有預(yù)定義的外部表結(jié)構(gòu)(列定義)。缺少結(jié)構(gòu)意味著外部表會(huì)查詢 parquet 文件中的所有列,包括用戶還未使用的列。NHp28資訊網(wǎng)——每日最新資訊28at.com

無結(jié)構(gòu)模式用法

? 無結(jié)構(gòu)模式由schemaless選項(xiàng)來啟用:NHp28資訊網(wǎng)——每日最新資訊28at.com

? schemaless選項(xiàng)是true:啟用無結(jié)構(gòu)模式。NHp28資訊網(wǎng)——每日最新資訊28at.com

? schemaless選項(xiàng)是false:禁用無結(jié)構(gòu)模式(我們稱之為non-schemaless模式)。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果未配置schemaless選項(xiàng),則默認(rèn)值為 false。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

? 無結(jié)構(gòu)外表需要至少一個(gè) jsonb 列來表示數(shù)據(jù):NHp28資訊網(wǎng)——每日最新資訊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 個(gè)以上的 jsonb 列,則僅填充一列,所有其他列都使用 NULL 值處理。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

? 示例:NHp28資訊網(wǎng)——每日最新資訊28at.com

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

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

? 查詢數(shù)據(jù):

-- 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)
NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在 jsonb 表達(dá)式中獲取值:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 使用 ->> jsonb 箭頭操作符,返回文本類型。用戶可以強(qiáng)制轉(zhuǎn)換 jsonb 表達(dá)式的類型,以獲得相應(yīng)的數(shù)據(jù)表示。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 例如,獲取col值的表達(dá)式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)
NHp28資訊網(wǎng)——每日最新資訊28at.com

? 某些功能與non-schemaless模式不同NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在sorted選項(xiàng)中定義列名,與non-schemaless mode相同NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在ORDER BY子句中使用slvar代替列名。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果排序的 parquet 列不是文本列,請將此列顯式地強(qiáng)制轉(zhuǎn)換到映射類型。NHp28資訊網(wǎng)——每日最新資訊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)
NHp28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

? Jsonb exist 運(yùn)算符:((v->>'col')::jsonb) ? element、(v->'col') ? element和v ? 'col'NHp28資訊網(wǎng)——每日最新資訊28at.com

? 轉(zhuǎn)換函數(shù)必須映射 parquet 列類型,否則會(huì)跳過過濾器。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 行組過濾器支持:在無結(jié)構(gòu)模式下,parquet_s3_fdw 可以通過一些如下的WHERE條件,支持對行組進(jìn)行過濾:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 要使用 parquet 文件的預(yù)排序列,用戶必須是:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 支持對嵌套列表和映射表使用箭頭運(yùn)算符:這些類型將被視為嵌套的 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)
NHp28資訊網(wǎng)——每日最新資訊28at.com

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

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

可寫的 FDW

用戶可以對已設(shè)置鍵列的外表,執(zhí)行 insert、update 和 delete 語句。NHp28資訊網(wǎng)——每日最新資訊28at.com

鍵列

? 在結(jié)構(gòu)化模式下:可以通過使用 OPTIONS (key 'true') 創(chuàng)建 parquet_s3_fdw 外表對象,來設(shè)置鍵列:NHp28資訊網(wǎng)——每日最新資訊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');

? 在無結(jié)構(gòu)模式下,可以在創(chuàng)建 parquet_s3_fdw 外部表對象時(shí),使用key_columns選項(xiàng)設(shè)置鍵列:NHp28資訊網(wǎng)——每日最新資訊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選項(xiàng)可用于 IMPORT FOREIGN SCHEMA 功能:NHp28資訊網(wǎng)——每日最新資訊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 選項(xiàng)

parquet_s3_fdw 用來在 INSERT 查詢中檢索目標(biāo) parquet 文件的用戶定義函數(shù)簽名:NHp28資訊網(wǎng)——每日最新資訊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 函數(shù)簽名規(guī)格:NHp28資訊網(wǎng)——每日最新資訊28at.com

? dirname arg:dirname 選項(xiàng)的值。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

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

? 默認(rèn)返回類型為TEXT(parquet 文件的完整路徑)NHp28資訊網(wǎng)——每日最新資訊28at.com

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

? args 值:NHp28資訊網(wǎng)——每日最新資訊28at.com

排序列:

parquet_s3_fdw 支持在修改功能中保持排序列的排序狀態(tài)。NHp28資訊網(wǎng)——每日最新資訊28at.com

Parquet 文件結(jié)構(gòu):

基本上,parquet 文件結(jié)構(gòu)是根據(jù)一組列名和相應(yīng)的類型定義的,但在 parquet_s3_fdw 的掃描中,它假定所有具有相同名稱的列都具有相同的類型。因此,在修改功能中,也會(huì)使用該假設(shè)。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

  • ? 基礎(chǔ)類型映射:

SQL 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

BOOL
NHp28資訊網(wǎng)——每日最新資訊28at.com

BOOL
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT2
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT16
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT4
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT32
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT8
NHp28資訊網(wǎng)——每日最新資訊28at.com

INT64
NHp28資訊網(wǎng)——每日最新資訊28at.com

FLOAT4
NHp28資訊網(wǎng)——每日最新資訊28at.com

FLOAT
NHp28資訊網(wǎng)——每日最新資訊28at.com

FLOAT8
NHp28資訊網(wǎng)——每日最新資訊28at.com

DOUBLE
NHp28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP/TIMESTAMPTZ
NHp28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP
NHp28資訊網(wǎng)——每日最新資訊28at.com

DATE
NHp28資訊網(wǎng)——每日最新資訊28at.com

DATE32
NHp28資訊網(wǎng)——每日最新資訊28at.com

TEXT
NHp28資訊網(wǎng)——每日最新資訊28at.com

STRING
NHp28資訊網(wǎng)——每日最新資訊28at.com

BYTEA
NHp28資訊網(wǎng)——每日最新資訊28at.com

BINARY
NHp28資訊網(wǎng)——每日最新資訊28at.com

? arrow::TIMESTAMP 的默認(rèn)時(shí)間精度為 UTC 時(shí)區(qū)的微秒級(jí)。NHp28資訊網(wǎng)——每日最新資訊28at.com

? LIST 是由它的元素類型創(chuàng)建的,對于元素只支持基礎(chǔ)類型。NHp28資訊網(wǎng)——每日最新資訊28at.com

? MAP 由其 jsonb 元素的類型來創(chuàng)建的:NHp28資訊網(wǎng)——每日最新資訊28at.com

jsonb 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

text
NHp28資訊網(wǎng)——每日最新資訊28at.com

STRING
NHp28資訊網(wǎng)——每日最新資訊28at.com

numeric
NHp28資訊網(wǎng)——每日最新資訊28at.com

FLOAT8
NHp28資訊網(wǎng)——每日最新資訊28at.com

boolean
NHp28資訊網(wǎng)——每日最新資訊28at.com

BOOL
NHp28資訊網(wǎng)——每日最新資訊28at.com

null
NHp28資訊網(wǎng)——每日最新資訊28at.com

STRING
NHp28資訊網(wǎng)——每日最新資訊28at.com

其他類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

STRING
NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在無結(jié)構(gòu)模式下:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在結(jié)構(gòu)化模式下,基礎(chǔ)的 jsonb 類型的映射與 MAP 相同。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 對于無結(jié)構(gòu)模式下的第一個(gè)嵌套的 jsonb:NHp28資訊網(wǎng)——每日最新資訊28at.com

jsonb 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
NHp28資訊網(wǎng)——每日最新資訊28at.com

array
NHp28資訊網(wǎng)——每日最新資訊28at.com

LIST
NHp28資訊網(wǎng)——每日最新資訊28at.com

object
NHp28資訊網(wǎng)——每日最新資訊28at.com

MAP
NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在結(jié)構(gòu)化模式下,LIST 和 MAP 的元素類型與 MAP 類型相同。NHp28資訊網(wǎng)——每日最新資訊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)

? 選擇要插入的文件:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 目標(biāo)文件是第一個(gè)其結(jié)構(gòu)與插入記錄匹配(插入記錄的所有列都存在于目標(biāo)文件中)的文件。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果沒有符合其結(jié)構(gòu)的文件與插入記錄的列匹配,并且已指定dirname選項(xiàng)。創(chuàng)建新文件,文件名格式為:[foreign_table_name]_[date_time].parquetNHp28資訊網(wǎng)——每日最新資訊28at.com

? 否則,會(huì)引發(fā)錯(cuò)誤消息。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果目標(biāo)文件不存在,則創(chuàng)建與目標(biāo)文件同名的新文件。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果目標(biāo)文件存在,但其結(jié)構(gòu)與插入記錄的列不匹配,則會(huì)引發(fā)錯(cuò)誤消息。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果存在選項(xiàng)insert_file_selector,目標(biāo)文件就是該函數(shù)的結(jié)果。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果選項(xiàng)insert_file_selector不存在:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 新文件的結(jié)構(gòu):NHp28資訊網(wǎng)——每日最新資訊28at.com

? 從現(xiàn)有文件列表中獲取。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果在任何文件中都不存在列:根據(jù)預(yù)定義的映射類型創(chuàng)建基礎(chǔ)文件。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在結(jié)構(gòu)化模式下,新文件將所有列都存在于外部表中。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 在無結(jié)構(gòu)模式下,新文件將在 jsonb 值中帶上所有列。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 列信息:NHp28資訊網(wǎng)——每日最新資訊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)

限制

? 不支持事務(wù)。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 無法同時(shí)在文件系統(tǒng)和 Amazon S3 上使用 parquet 文件創(chuàng)建單個(gè)外部表。NHp28資訊網(wǎng)——每日最新資訊28at.com

? import_parquet_s3_explicit()函數(shù)的第 4 和第 5 個(gè)參數(shù),在schemaless模式下沒有意義。NHp28資訊網(wǎng)——每日最新資訊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.

? 這些參數(shù)應(yīng)該定義為NULL值。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 如果這些參數(shù)不是 NULL 值,則會(huì)出現(xiàn)下面的WARNING:NHp28資訊網(wǎng)——每日最新資訊28at.com

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

? 在修改功能中:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 對于大文件,性能不太好。NHp28資訊網(wǎng)——每日最新資訊28at.com

? 當(dāng)完全相同的文件同時(shí)修改時(shí),結(jié)果會(huì)出現(xiàn)不一致。NHp28資訊網(wǎng)——每日最新資訊28at.com

? parquet_s3_fdw修改 parquet 文件的方法是,從目標(biāo) parquet 文件創(chuàng)建可修改的緩存數(shù)據(jù),并覆蓋舊文件:NHp28資訊網(wǎng)——每日最新資訊28at.com

? 不支持 WITH CHECK OPTION、ON CONFLICT 和 RETURNING。NHp28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

? key列僅用于 UPDATE/UPDATE。NHp28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-88578-0.htmlOracle 數(shù)據(jù)量 150T,PostgreSQL 能搞定嗎?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 零基礎(chǔ)入門:使用Python pyWinAuto自動(dòng)化你的Windows任務(wù)

下一篇: SpringBoot項(xiàng)目中這十個(gè)開發(fā)技巧,你都知道嗎?

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲精品麻豆| 国产日韩精品一区观看| 美女被久久久| 欧美激情久久久久久| 国产精品国码视频| 国内成人自拍视频| 亚洲激情网站免费观看| 亚洲深夜福利视频| 久久精品系列| 欧美日韩免费一区二区三区| 国产精品美女一区二区在线观看| 国产亚洲精品自拍| 亚洲激情视频在线| 亚洲欧美另类国产| 欧美成人国产一区二区| 国产精品久久久久久久久久三级| 一区在线免费观看| 亚洲无毛电影| 免费久久99精品国产自| 国产精品国产三级国产aⅴ浪潮| 黄网动漫久久久| 中文一区二区在线观看| 久久综合九色综合欧美就去吻| 欧美三区美女| 国户精品久久久久久久久久久不卡| 亚洲精选91| 久久精品成人欧美大片古装| 欧美精品日韩综合在线| 国产性猛交xxxx免费看久久| 亚洲理伦电影| 久久免费少妇高潮久久精品99| 欧美视频二区| 亚洲欧洲午夜| 久久久久久久波多野高潮日日 | 国产精品日韩专区| 亚洲国产精品一区在线观看不卡 | 老司机成人网| 国产精品高清在线观看| 亚洲电影免费| 欧美在线视频观看| 欧美色欧美亚洲另类七区| 在线观看av不卡| 欧美亚洲色图校园春色| 欧美日韩美女| 亚洲黄色成人| 久久久久免费| 国产视频丨精品|在线观看| 99视频超级精品| 久久视频一区| 国产午夜精品久久久久久久| 在线亚洲欧美视频| 欧美激情中文字幕乱码免费| 在线成人性视频| 久久aⅴ国产紧身牛仔裤| 欧美午夜宅男影院在线观看| 亚洲国产精品精华液网站| 欧美呦呦网站| 亚洲免费精品| 久久人人爽人人爽爽久久| 国产午夜亚洲精品不卡| 亚洲一区www| 欧美日韩亚洲精品内裤| 亚洲欧洲日本mm| 免费不卡在线视频| 精品999成人| 久久久999精品| 国产婷婷色一区二区三区在线| 亚洲一二区在线| 欧美揉bbbbb揉bbbbb| 亚洲免费激情| 欧美激情黄色片| 亚洲电影免费| 免费成人小视频| 亚洲高清不卡一区| 狂野欧美激情性xxxx| 一区在线电影| 久久久在线视频| 韩日欧美一区二区| 久久精品视频播放| 激情综合久久| 久久这里有精品15一区二区三区 | 亚洲精品男同| 欧美二区视频| 亚洲精选大片| 欧美日韩精品一区二区在线播放 | 亚洲午夜电影在线观看| 欧美午夜精品电影| 亚洲视频在线视频| 国产精品成人一区二区三区夜夜夜 | 蜜臀av性久久久久蜜臀aⅴ四虎| 国产字幕视频一区二区| 久久成人国产| 一区二区视频免费在线观看 | 欧美大片在线看免费观看| 亚洲狠狠丁香婷婷综合久久久| 欧美sm视频| 亚洲三级毛片| 欧美视频官网| 午夜精品久久久久久久白皮肤 | 国产亚洲精品v| 久久久国产一区二区| 永久免费毛片在线播放不卡| 免费短视频成人日韩| 亚洲精品免费一区二区三区| 欧美精品在线视频| 亚洲午夜一区二区三区| 国产乱码精品一区二区三区五月婷 | 亚洲狼人综合| 国产精品久久久久久久久久直播| 亚洲欧美综合一区| 国产一区二区三区日韩| 狼人社综合社区| 亚洲精品中文字幕在线| 欧美日韩一区二区视频在线观看 | 欧美日韩第一页| 亚洲午夜伦理| 国模一区二区三区| 欧美韩国在线| 亚洲欧美日韩成人高清在线一区| 国产日产欧产精品推荐色| 另类av一区二区| 中文国产一区| 黄色国产精品| 欧美日韩精品在线观看| 午夜精品久久久久久99热| 在线日韩成人| 国产精品高潮在线| 久久一区精品| 亚洲性视频网站| 黄色av日韩| 欧美日韩一区综合| 久久成人国产| 日韩一级黄色av| 国产一区深夜福利| 欧美日韩福利| 欧美在线一区二区三区| 亚洲美女网站| 国内精品99| 欧美日韩免费一区二区三区视频 | 国产精品久久久久久久午夜片| 久久激情五月激情| 日韩午夜在线观看视频| 国产午夜精品一区二区三区欧美| 欧美成人午夜激情| 亚洲综合精品一区二区| 在线播放视频一区| 国产精品免费一区二区三区观看| 久久亚洲精选| 亚洲欧美激情视频在线观看一区二区三区| 伊人久久大香线| 国产精品电影网站| 欧美超级免费视 在线| 性久久久久久久久久久久| 亚洲美女视频在线观看| 狠狠久久婷婷| 国产精品久久久久久久久动漫 | 欧美国内亚洲| 久久久久91| 亚洲午夜羞羞片| 亚洲国产裸拍裸体视频在线观看乱了中文 | 美女视频黄免费的久久| 午夜精品久久久久久久蜜桃app| 亚洲三级免费| 黄色国产精品| 国产农村妇女精品一区二区| 欧美另类女人| 麻豆91精品| 久久精品视频在线观看| 亚洲欧美影院| 亚洲视频免费看| 91久久嫩草影院一区二区| 国产一区av在线| 国产精品日韩在线| 欧美性一区二区| 欧美国产亚洲精品久久久8v| 久久久精品2019中文字幕神马| 亚洲资源av| 一本色道久久| 日韩午夜视频在线观看| 91久久久久久| 在线欧美日韩国产| 国内在线观看一区二区三区| 国产精品一区二区黑丝| 国产精品v亚洲精品v日韩精品 | 亚洲大胆女人| 国产亚洲毛片在线| 国产农村妇女毛片精品久久莱园子 | 亚洲美女精品一区| 亚洲黄色在线| 亚洲国产成人不卡| 在线观看国产欧美| 国产在线成人| 国产在线乱码一区二区三区| 国产精品无人区| 国产精品爱久久久久久久| 欧美色123| 欧美日韩中国免费专区在线看| 欧美极品色图| 欧美精品aa| 欧美喷水视频| 欧美日韩亚洲国产精品| 国产精品videosex极品| 欧美体内谢she精2性欧美| 欧美午夜免费|