Redshift创建外部表报错[Amazon](500310):输入末尾语法错误求助
排查Redshift外部表创建的语法错误
你遇到的这个语法错误,核心原因是Redshift创建外部表时缺少了必填的LOCATION子句——外部表本质是映射到外部存储(比如S3)的数据,必须明确指定数据所在的路径,否则Redshift不知道要关联哪里的数据。
你的SQL在列定义结束后直接收尾,没有添加外部表必需的存储位置等配置,这就导致了语法解析到末尾时出错,对应错误提示里的Position: 684(正好是你列定义的结束位置)。
修正后的示例代码
根据Redshift外部表的规范,补充LOCATION以及适配你数据格式的配置(这里以常见的Parquet格式为例,你可以根据实际数据调整):
CREATE EXTERNAL TABLE schema_vtvs_ai_ext.fire( fire_number VARCHAR(50), fire_year DATE, assessment_datetime INTEGER, size_class CHAR, fire_location_latitude REAL, fire_location_longitude REAL, fire_origin VARCHAR(50), general_cause_desc VARCHAR(50), activity_class VARCHAR(50), true_cause VARCHAR(50), fire_start_date DATE, det_agent_type VARCHAR(50), det_agent VARCHAR(50), discovered_date DATE, reported_date DATE, start_for_fire_date DATE, fire_fighting_start_date DATE, initial_action_by VARCHAR(50), fire_type VARCHAR(50), fire_position_on_slope VARCHAR(50), weather_conditions_over_fire VARCHAR(50), fuel_type VARCHAR(50), bh_fs_date DATE, uc_fs_date DATE, ex_fs_date DATE ) STORED AS PARQUET LOCATION 's3://your-bucket-name/path-to-fire-data/';
关键注意点:
LOCATION是必填项:必须填写存储数据的S3路径(需要确保Redshift的IAM角色有访问该路径的权限)。- 数据格式适配:如果你的数据是CSV格式,需要替换
STORED AS PARQUET为类似ROW FORMAT DELIMITED FIELDS TERMINATED BY ',',还可以添加HEADER参数(如果CSV有表头)。 - 额外配置:如果需要,还可以添加
TABLE PROPERTIES来设置比如分区、压缩等参数。
你可以根据实际存储的数据格式和路径调整上述代码,应该就能解决这个语法错误了。
内容的提问来源于stack exchange,提问作者arjn95
相关产品推荐
相关产品推荐

