目錄
一、前言
二、創建外表的特點
二、GaussDB創建外表訪問外部數據庫表(示例)
1、創建外表
2、FAQ:CREATE USER MAPPING錯誤
三、GaussDB創建外表映射數據文件(示例)
1、創建數據文件
2、創建外表
3、FAQ:創建(外部服務器/外表)時報錯
四、小結
一、前言
GaussDB是一個高效、可靠、安全的企業級數據庫管理系統,它提供了豐富的功能和卓越的性能,以滿足不同行業的業務需求。在GaussDB中,創建外表(CREATE FOREIGN TABLE)是一種方便的機制,用于訪問外部數據源并對其進行統一管理和查詢。通過創建外表,用戶可以將存儲在文件系統、外部表、視圖等外部數據源中的數據集成到GaussDB數據庫中,并像操作普通表一樣進行查詢、連接和并行操作等。
在本篇文章中,我們將介紹如何使用GaussDB創建外表,以及通過一些簡單的示例進行說明。
二、創建外表的特點
用戶可以將外部數據源(如文件系統、外部表、視圖等)的數據映射為數據庫中的一張表,并對其進行查詢、連接和并行操作等,就像對普通表進行操作一樣。
具體來說,創建外表有以下一些特點:
- 統一數據源管理:通過將多個外部數據源的數據集成到一張表中,用戶可以方便地對這些數據進行統一查詢使用,避免了多個不同的數據源之間的切換和拼接。
- 提高查詢效率:通過創建外表,用戶可以將原本需要直接對外部數據源進行查詢的操作轉換為對數據庫中的表進行查詢,這可以避免一些重復的數據讀取和解析操作,從而提高查詢效率。
二、GaussDB創建外表訪問外部數據庫表(示例)
1、創建外表
通過創建外表(F_A)訪問另一數據庫(demo)中的表(websites):
--安裝一個擴展(fdw工具)
create extension postgres_fdw; --創建遠程(外部)服務器,定義主機地址、端口、數據庫名
drop server fore_server;
create server fore_server foreign data wrapper postgres_fdw options(host '192.168.52.3',port '26000',dbname 'demo');--定義一個用戶到一個外部服務器的新映射。
drop USER MAPPING FOR USER SERVER fore_server;
CREATE USER MAPPING FOR USER SERVER fore_server OPTIONS (user 'dbuser', password 'Gauss#3demo');--創建外部表
DROP FOREIGN TABLE F_A;
CREATE FOREIGN TABLE F_A(id INT,name VARCHAR(20),url VARCHAR(50)
) SERVER fore_server OPTIONS (SCHEMA_NAME 'demo',TABLE_NAME 'websites');--訪問外部表
SELECT * FROM F_A;
示例結果:如下截圖中的返回結果與websites表中的數據一致。
2、FAQ:CREATE USER MAPPING錯誤
“??ERROR:? No key file usermapping.key.cipher
HINT:? Please create usermapping.key.cipher file with gs_guc and gs_ssh, such as :gs_ssh -c "gs_guc generate -S XXX -D $GAUSSHOME/bin -o usermapping"? ?”
解決方案:執行命令行
“??gs_ssh -c "gs_guc generate -o usermapping -S default -D $GAUSSHOME/bin"??”。
三、GaussDB創建外表映射數據文件(示例)
1、創建數據文件
進入服務器目錄,創建用于存放數據文件的目錄“mkdir input_data” ,并創建一個測試數據文件(如截圖)。 絕對路徑:“/gaussdb/input_data/test_f1.csv” 。
2、創建外表
--安裝file_fdw工具(pg_extension)
CREATE EXTENSION file_fdw;--創建外部服務器
CREATE SERVER file_fdw_server FOREIGN DATA WRAPPER file_fdw;--建立外表,映射指定目錄下的數據文件(test_f1.csv)。
CREATE FOREIGN TABLE f_input_test
(id INT,name VARCHAR(10),age INT
) SERVER file_fdw_server OPTIONS (filename '/gaussdb/input_data/test_f1.csv', format 'csv', delimiter ',');--訪問
SELECT * FROM f_input_test
說明:如上過程需要管理員角色執行。
示例結果:
3、FAQ:創建(外部服務器/外表)時報錯
“?ERROR:? Dist fdw are only available for the supper user and Operatoradmin?”
解決方案:切換管理員角色執行。
四、小結
在GaussDB數據庫中,FOREIGN TABLE是一種用于創建外部表的方法。通過這種方式,可以將其他數據庫或文件中的數據映射到GaussDB數據庫中,實現數據的共享和訪問。
外表的特點包括跨數據庫的數據查詢和操作、提高數據的集成和共享能力、支持多種數據模型和存儲引擎。 在實際應用場景中,可以通過創建外表來實現:數據遷移(將一個數據庫中的數據導入到另一個數據庫中)、數據整合(將多個數據庫中的數據進行合并和分析)、數據共享(將一個數據庫中的數據提供給其他數據庫或應用程序使用)等。
更多示例參見官方文檔:
CREATE FOREIGN TABLE_云數據庫 GaussDB_主備版_3.x版本_SQL參考_SQL語法_華為云
——結束