从 Amazon S3 中加载固定宽度的数据 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从 Amazon S3 中加载固定宽度的数据

固定宽度的数据文件的每个数据列具有统一的长度。固定宽度的数据文件中的每个字段的长度和位置完全相同。对于固定宽度的数据文件中的字符数据(CHAR 和 VARCHAR),您必须包括前导空格或尾随空格作为占位符,以便保持宽度统一。对于整数,您必须使用前导零作为占位符。固定宽度的数据文件没有用于分隔列的分隔符。

要将固定宽度的数据文件加载到现有表,请在 COPY 命令中使用 FIXEDWIDTH 参数。您的表说明必须与 fixedwidth_spec 的值相匹配才能正确加载数据。

要将固定宽度的数据从文件加载到表,请发出以下命令:

copy table_name from 's3://mybucket/prefix' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth 'fixedwidth_spec';

fixedwidth_spec 参数是一个字符串,其中包含每个列的标识符和每个列的宽度(用冒号分隔)。column:width 对由逗号分隔。标识符可以是您选择的任意形式:数字、字母或二者的组合。标识符与表本身无关,因此说明包含列的顺序必须与表中的列顺序相同。

以下两个示例演示了相同说明,第一个使用数字标识符,第二个使用字符串标识符:

'0:3,1:25,2:12,3:2,4:6'
'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'

以下示例演示了固定宽度的样本数据,可使用前面的说明将这些数据加载到 VENUE 表中:

1 Toyota Park Bridgeview IL0 2 Columbus Crew Stadium Columbus OH0 3 RFK Stadium Washington DC0 4 CommunityAmerica Ballpark Kansas City KS0 5 Gillette Stadium Foxborough MA68756

以下 COPY 命令会将此数据集加载到 VENUE 表中:

copy venue from 's3://mybucket/data/venue_fw.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';