You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Python Glue Job无法将数值列导入PostgreSQL RDS问题咨询

问题

我有一个Glue任务,通过JDBC连接从S3存储桶读取CSV文件并将数据导入PostgreSQL RDS表。目前字符串/varchar类型列可正常导入,但数值类型列无法导入。以下是PostgreSQL RDS的列类型(附截图),对应的Python Glue脚本如下:

def __step_mapping_columns(self):

    # Script generated for node S3 bucket
    dynamicFrame_dept_summary = self.glueContext.create_dynamic_frame.from_options(
        format_options={"quoteChar": '"', "withHeader": True, "separator": ","},
        connection_type="s3",
        format="csv",
        connection_options={
            "paths": [
                ""
            ],
            "recurse": True,
        },
        transformation_ctx="dynamicFrame_dept_summary",
    )

    # Script generated for node ApplyMapping
    applyMapping_dept_summary = ApplyMapping.apply(
        frame=dynamicFrame_dept_summary,
        mappings=[("PROCESS_MAIN", "string", "process_main", "string"), 
                   ("PROCESS_CORE", "string", "process_core", "string"), 
                   ("DC", "string", "dc", "string"),
                   ("BAG_SIZE", "string", "bag_size", "string"), 
                   ("EVENT_30_LOC", "string", "start_time_utc", "string"),
                   ("VOLUME", "long", "box_volume", "long"),
                   ("MINUTES", "long", "minutes", "long"),
                   ("PLAN_MINUTES", "long", "plan_minutes", "long"), 
                   ("PLAN_RATE", "long", "plan_rate", "long")],
        transformation_ctx="applyMapping_dept_summary",
    )
    logger.info(mappings)

    return applyMapping_dept_summary

请问该问题的可能原因是什么?

可能原因分析
  • CSV文件数值列存在非合法数据:VOLUME、MINUTES等数值列可能包含空值、文本标识(如"NA"、"无")、带格式符号的数值(如千分位逗号、货币符号),Glue无法将这些内容解析为long类型,导致导入失败。
  • 数据类型映射不匹配:PostgreSQL目标表的数值列类型可能和Glue指定的long不兼容,比如目标列是integer、numeric或float:
    • 若目标列是integer,CSV中数值超出int范围会触发溢出错误;
    • 若目标列是numeric/float,强制映射为long会丢失精度或导致类型转换失败。
  • Glue自动推断类型干扰:默认情况下Glue会自动推断CSV列类型,如果推断结果为string(比如数值列存在少量非数值数据),后续强制映射为long会引发类型转换异常。可在format_options中添加"inferSchema": False,或显式指定schema避免自动推断。
  • 空值约束冲突:PostgreSQL目标数值列若设置了NOT NULL约束,但CSV中对应列存在空值,且未配置默认值,会导致导入失败;或Glue对空值的处理逻辑与PostgreSQL不兼容。
  • JDBC连接参数缺失:连接PostgreSQL的JDBC URL可能缺少关键参数(如stringtype=unspecified),导致JDBC层面的数值类型转换错误。
  • 数值精度/范围不匹配:如果CSV中的数值是小数(如PLAN_RATE包含小数),映射为long会直接报错,此时需根据PostgreSQL目标列类型,将Glue映射类型改为double或decimal。

内容的提问来源于stack exchange,提问作者saima m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:15:42