从 Amazon S3 中加载固定宽度的数据
固定宽度的数据文件的每个数据列具有统一的长度。固定宽度的数据文件中的每个字段的长度和位置完全相同。对于固定宽度的数据文件中的字符数据(CHAR 和 VARCHAR),您必须包括前导空格或尾随空格作为占位符,以便保持宽度统一。对于整数,您必须使用前导零作为占位符。固定宽度的数据文件没有用于分隔列的分隔符。
要将固定宽度的数据文件加载到现有表,请在 COPY 命令中使用 FIXEDWIDTH 参数。您的表说明必须与 fixedwidth_spec 的值相匹配才能正确加载数据。
要将固定宽度的数据从文件加载到表,请发出以下命令:
COPY table_name FROM 's3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/data/venue_fw.txt' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' FIXEDWIDTH 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';