Postgresql
在 PostgreSQL 的外部數據包裝器中命名列的方式與其原始列不同
我有兩個數據庫。在每個數據庫中,我都有一個
employee
表,其列數和列名彼此不同。這是表在第一個數據庫中的樣子:
Emp_ID Name Father_Name Family_Name 1 Max Stjepan Neg 2 John Chris James
這是第二個數據庫中的第二個表的樣子:
ID Name Father_Name Family_Name Blood_Type 1 Max Stjepan Neg ARH+ 2 John Chris James ORH-
現在,在Second Database中創建外部表時,我想使用列名 ID 儲存First Database
Emp_ID
中的值,並且我希望我的外部表包含目前數據庫Second Database中表中的血型。簡而言之,如何創建一個列名與遠端數據庫中的原始表不同的外部表?它還應該包括目前數據庫中第一個表中的列。
您可以隨意命名外部表的列。例如,在一個之後
IMPORT FOREIGN SCHEMA ...
你可以做ALTER FOREIGN TABLE myschema.mytable RENAME a_column TO another_column;
(對於
CREATE FOREIGN TABLE
,您必須在OPTIONS
子句中為列指定不同的列名CREATE FOREIGN TABLE foreign.employee (emp_id integer OPTIONS (column_name 'id'), ...
:)您不能做的是混合本地表和外部表中的列。要實現類似的效果,您可以創建一個視圖:
CREATE VIEW unified_employee AS SELECT local.id AS emp_id, local.name, ..., foreign.blood_type FROM local_schema.employee AS local JOIN foreign_schema.employee AS foreign ON local.id = foreign.emp_id;
我故意交換了這個例子中的表格。您的範例表沒有足夠的差異,因此在本地
employee
表上的簡單視圖(該id
列被命名)emp_id
就可以解決問題,而無需觸及其他數據庫。