Redshift建立外部架構external schema和外部表external table
涉及的知識點Athena
Amazon Athena是一種互動式查詢服務,可以使用標準SQL輕鬆分析Amazon Simple Storage Service(Amazon S3)中的資料。透過AWS管理控制檯中的一些操作,您可以將Athena指向儲存在Amazon S3中的資料。在 Athena 中,表和資料庫是為底層源資料定義架構的後設資料定義的容器。對於每個資料集,Athena 中都需要存在一個表。表中的後設資料讓 Athena 知道資料在 Amazon S3 中的位置,並指定資料的結構,例如列名稱、資料型別和表的名稱。資料庫是表的邏輯分組,並且只儲存資料集的後設資料和架構資訊。
建立external schema的標準語法
CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM { [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | MYSQL }
DATABASE 'database_name'
[ REGION 'aws-region' ]
[ URI 'hive_metastore_uri' [ PORT port_number ] ]
IAM_ROLE 'iam-role-arn-string'
SECRET_ARN 'ssm-secret-arn'
[ CATALOG_ROLE 'catalog-role-arn-string' ]
[ CREATE EXTERNAL DATABASE IF NOT EXISTS ]
--備註:上述DATA CATALOG中的DATABASE就是指外部資料庫,即可以Amazon Athena中看到的外部資料庫,而非pg_database裡面的資料庫
建立external table的標準語法
CREATE EXTERNAL TABLE
external_schema.table_name
(column_name data_type [, …] )
[ PARTITIONED BY (col_name data_type [, … ] )]
[ { ROW FORMAT DELIMITED row_format |
ROW FORMAT SERDE 'serde_name'
[ WITH SERDEPROPERTIES ( 'property_name' = 'property_value' [, ...] ) ] } ]
STORED AS file_format
LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }
[ TABLE PROPERTIES ( 'property_name'='property_value' [, ...] ) ]
查詢外部架構external schema的語句
select * from SVV_EXTERNAL_SCHEMAS
查詢外部架構external schema對應的許可權的語句
select * from pg_namespace where nspname='XX'
查詢外部資料庫的語句
select * from SVV_EXTERNAL_DATABASES
備註:external database沒有獨立的語句來建立,即無法獨立create\delete EXTERNAL DATABASE dbname,只能隨external schema建立時加上 CREATE EXTERNAL DATABASE IF NOT EXISTS自動建立或在Athena介面手工建立或刪除
查詢外部表external table的語句
select * from SVV_EXTERNAL_TABLES
問題
1、如下語句建立後,intraday_spectrum下自動生成了一堆外部表external table
create external schema intraday_spectrum
from data catalog
database 'timeseries'
iam_role 'arn:aws:iam::807898748937:role/RedshiftS3IntraDayLoadProd';
2、如下語句建立後,intraday_spectrum2下是空的沒有外部表external table
create external schema intraday_spectrum2
from data catalog
database 'timeseries2'
iam_role 'arn:aws:iam::807898748937:role/RedshiftS3IntraDayLoadProd';
解答:因為在Athena介面看到AwsDataCatalog下面有個資料庫叫'timeseries',它下面已經存在了很多現成的外部表,這個資料庫是外部資料庫和我們redshift中查詢的pg_database不一樣,SVV_EXTERNAL_DATABASES會記錄該外部資料庫,所以當這個外部資料已經存在外部表時,我們在建立外部架構external schema時指定這個外部資料庫,這個外部架構external schema也就自動帶上了這個外部資料庫的外部表
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2846831/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 外部表 external tableOracle
- Oracle外部表 External TableOracle
- 【移動資料】External Table 外部表
- Redshift__在一個外部架構下建立外部表後,其他外部架構也自動生成了一樣的外部表架構
- 資料庫表--external table資料庫
- sqlldr與external tableSQL
- sqlldr和external table的關係!SQL
- ORACLE_DATAPUMP & External TableOracle
- alert_log設定成external table
- 【12.2】Oracle 12C R2新特性-外部表支援分割槽了(Partitioning External Tables)Oracle
- use azure data studio to create external table for oracleOracle
- oracle_datapump建立外部表案例Oracle
- 有關oracle external table的一點測試。Oracle
- External Views (33)View
- Oracle外部表Oracle
- Oracle 外部表Oracle
- 使用SQL*Loader建立外部表之二SQL
- 使用SQL*Loader建立外部表之一SQL
- 利用ORACLE_DATAPUMP為驅動建立外部表Oracle
- 【轉】Oracle 外部表Oracle
- Parallel Access to External Tables (173)Parallel
- Oracle外部表的管理和應用Oracle
- Hive內部表和外部表的區別Hive
- oracle外部表建立以及收集統計資訊以及臨時表Oracle
- 外部表筆記-datapump筆記
- Oracle外部表學習Oracle
- 介紹oracle外部表Oracle
- oracle sqlldr 與 外部表OracleSQL
- ORACLE學習之外部表Oracle
- 外部表簡單總結
- hive中的表、外部表、分割槽和桶的理解Hive
- Creating External Lists From Code
- Data Loading with External Tables (172)
- 【SQLLDR】使用SQL*Loader輔助生成外部表建立語句SQL
- hive學習筆記之三:內部表和外部表Hive筆記
- Postgresql外部表使用 postgres_fdwSQL
- Clickhouse的MySQL外部表,坑貨!MySql
- 外部表載入資料(ExternalTables)