AWS DMS - Oracle 到 PG RDS 完全加载操作错误 - 无法从 csv 文件加载数据

Posted

技术标签:

【中文标题】AWS DMS - Oracle 到 PG RDS 完全加载操作错误 - 无法从 csv 文件加载数据【英文标题】:AWS DMS - Oracle to PG RDS full load operation error - failed to load data from csv file 【发布时间】:2019-12-22 23:21:27 【问题描述】:

我正在尝试使用 DMS 将数据从 oracle 实例移动到 postgres RDS。我只是在做一个完整的加载操作,我已经禁用了目标上的所有外键。我还确保相同表的列之间的数据类型不匹配。我为目标表准备模式尝试了“什么都不做”和“截断”,当我运行任务时,有几个表失败并显示以下错误消息:

[TARGET_LOAD ]E: Command failed to load data with exit error code 1, Command output: <truncated> [1020403] (csv_target.c:981)
[TARGET_LOAD ]E: Failed to wait for previous run [1020403] (csv_target.c:1578)
[TARGET_LOAD ]E: Failed to load data from csv file. [1020403] (odbc_endpoint_imp.c:5648)
[TARGET_LOAD ]E: Handling End of table 'public'.'SKEWED_VALUES' loading failed by subtask 6 thread 1 [1020403] (endpointshell.c:2416)

DMS 没有提供正确的错误信息,我无法理解上述错误信息的含义。

当我为目标表准备模式使用“在目标上删除表”时,它可以工作,但它以我不想要的不同方式创建列的数据类型。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

为了解决我的问题,我创建了一份仅加载一个问题表的任务副本,并将所有日志记录严重性提升为“详细调试”。然后我就可以看到了:

[TARGET_LOAD ]D: RetCode: SQL_SUCCESS_WITH_INFO SqlState: 42622 NativeError: -1 Message: NOTICE: identifier "diagnosticinterpretationrequestdata_diagnosticinterpretationcode" will be truncated to "diagnosticinterpretationrequestdata_diagnosticinterpretationcod" (ar_odbc_stmt.c:4720)

在我找到的目标数据库的 RDS 日志中:

2021-10-11 14:30:36 UTC:...:[19259]:ERROR: invalid input syntax for integer: ""
2021-10-11 14:30:36 UTC:...:[19259]:CONTEXT: COPY diagnosticinterpretationrequest, line 1, column diagnosticinterpretationrequestdata_diagnosticinterpretationcod: ""
2021-10-11 14:30:36 UTC:...:[19259]:STATEMENT: COPY "myschema"."diagnosticinterpretationrequest" FROM STDIN WITH DELIMITER ',' CSV NULL 'attNULL' ESCAPE '\'

我发现如果我添加一个表映射规则来显式重命名列以在 Postgres 的标识符长度限制内截断名称,那么一切正常。

    
        "rule-type": "transformation",
        "rule-id": "1",
        "rule-name": "1",
        "rule-target": "column",
        "object-locator": 
            "schema-name": "%",
            "table-name": "%",
            "column-name": "diagnosticinterpretationrequestdata_diagnosticinterpretationcode"
        ,
        "rule-action": "rename",
        "value": "diagnosticinterpretationrequestdata_diagnosticinterpretationcod",
        "old-value": null
    ,

【讨论】:

以上是关于AWS DMS - Oracle 到 PG RDS 完全加载操作错误 - 无法从 csv 文件加载数据的主要内容,如果未能解决你的问题,请参考以下文章

AWS DMS - 如何将 RDS 表数据写入单个 S3 目标文件?

AWS DMS 不支持 RDS SQL Server 的 CDC/更改跟踪。

AWS DMS Redshift 作为目标

AWS DMS:复制任务已停止。停止原因 FULL_LOAD_ONLY_FINISHED

AWS DMS 任务在 CDC 模式下一段时间后失败

将Java存储过程迁移到AWS RDS oracle