请求确认CREATE EXTERNAL TABLE语句的实际执行逻辑
CREATE EXTERNAL TABLE ... AS SELECT 执行逻辑确认
你的理解是正确的,这条语句的执行逻辑是将本地dbo.PurchTable表/视图的数据导出到外部数据源D365指定的LOCATION路径,同时在本地创建一个指向该外部数据的外部表parquet.__PurchTable。
具体拆解:
- 语句后半段
AS SELECT {NameList} FROM dbo.PurchTable是核心数据来源:从本地的dbo.PurchTable查询指定字段的数据 - WITH子句指定了外部存储的参数:
DATA_SOURCE = D365:目标外部数据源LOCATION = 'snapshot/PurchTable/202203':数据要写入到D365数据源下的这个路径FILE_FORMAT = _parquet:数据将以parquet格式存储
- 最终效果:系统会把查询结果写入到
D365的指定路径中,同时创建外部表parquet.__PurchTable,后续通过这个外部表可以直接访问存储在D365路径里的parquet数据。
而另一种“基于外部数据源已有数据创建外部表”的写法是不带AS SELECT子句的,语法类似:
CREATE EXTERNAL TABLE parquet.__PurchTable ( -- 定义表结构字段 Column1 INT, Column2 VARCHAR(100), ... ) WITH ( LOCATION = 'snapshot/PurchTable/202203', DATA_SOURCE = D365, FILE_FORMAT = _parquet )
这种才是映射外部已存在的数据到本地外部表,不会产生数据导出的动作。
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

