file://协议
file://
协议被用在一个指定操作系统文件的URI中。
该URI包括主机名、端口和该文件的路径。每个文件都必须位于一个Segment主机上由Greenplum超级用户
(gpadmin
)可访问的位置。该URI中使用的主机名必须匹配gp_segment_configuration
系统目录表中注册的一个Segment主机名。
如例子中所示,LOCATION
子句可以有多个URI:
CREATE EXTERNAL TABLE ext_expenses (
name text, date date, amount float4, category text, desc1 text )
LOCATION ('file://host1:5432/data/expense/*.csv',
'file://host2:5432/data/expense/*.csv',
'file://host3:5432/data/expense/*.csv')
FORMAT 'CSV' (HEADER);
用户在LOCATION
子句中指定的URI的数量就是将并行工作访问外部表的Segment实例的数量。
对于每一个URI,Greenplum为该文件指派一个指定主机上的主Segment。
为了装载数据时的最大并行化,可将数据与主Segment数量相同的大小均等的文件。
这会保证所有的Segment都参与到装载中。每个Segment主机上的外部文件不能超过该主机上主Segment实例的数量。
例如,如果用户的阵列的每个Segment主机上有四个主Segment实例,用户可以在每个Segment主机上放置四个外部文件。
基于file://
协议的表只能是可读表。
系统视图pg_max_external_files
显示每个外部表允许多少个外部表文件。
这个视图列出了使用file://协议
协议时每个Segment主机上可用的文件槽。
该视图只适用于file://协议
。
例如:
SELECT * FROM pg_max_external_files;
Parent topic: 定义外部表