注意,用于导出的外部表一定是Writable,赋权的时候一定要Grant ALL给一个用户,该用户才能使用这个外部表导出数据。
1. 带分隔符导出
可以只为外部表创建一个很长的字段,在select语句中拼接成一个字段:
CREATE Writable EXTERNAL TABLE schema_name.external_table_name
(
exportdata character varying(3000)
)
LOCATION (
'gpfdist://192.168.0.240:10000/temp/my_table_file.txt'
)
FORMAT 'text' (delimiter '^' null '' escape '\\')
ENCODING 'GB18030';
ALTER TABLE schema_name.external_table_name OWNER TO gpadmin;
GRANT ALL ON TABLE schema_name.external_table_name TO a_user;
2. 定长导出
drop external table schema_name.external_table_name;
CREATE Writable EXTERNAL TABLE schema_name.external_table_name
(
field1 character varying(2),
field2 character varying(8),
field3 character varying(15),
field4 character varying(1),
)
LOCATION (
'gpfdist://192.168.0.240:8080/export/my_fixedwith_file.txt'
)
FORMAT 'CUSTOM' (formatter='fixedwidth_out', field1='2', field2='8', field3='15', field4='1', line_delim='\n' )
ENCODING 'GB18030';
GRANT ALL ON TABLE schema_name.external_table_name TO user_a;
建好后,通过客户端看到创建出的外部表定义如下:
CREATE EXTERNAL TABLE schema_name.external_table_name
(
field1 character varying(2),
field2 character varying(8),
field3 character varying(15),
field4 character varying(1),
)
LOCATION (
'gpfdist://192.168.0.240:8080/export/my_fixedwith_file.txt'
)
FORMAT 'csv' (formatter 'fixedwidth_out' field1 '2' field2 '8' field3 '15' field4 '1' line_delim '
' )
ENCODING 'GB18030';
GRANT select ON TABLE schema_name.external_table_name TO user_a;
直接拿这个语句进行执行就会出现语法错误。
本文介绍了在Greenplum中如何创建Writable的外部表进行数据导出,强调了Grant ALL权限给特定用户的重要性。内容包括带分隔符和定长方式的数据导出方法。

574

被折叠的 条评论
为什么被折叠?



