AWS DMS将源PostgreSQL TIMESTAMP列转换为S3中的不同值

zpqajqem  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(150)
  • DMS详细信息:
  • 源端点是PostgreSQL DB。
  • 目标端点是S3 - Parquet文件。

源数据库有一个数据类型为timestamp的列paymentdate。在paymentdate中有一行值存储为0002-11-30 00:00:00.000
当通过DMS处理时,上面的行作为值0003-11-30 00:00:00.000复制到S3 parquet文件中。作为DMS定义的一部分,不对列应用任何转换(即,不为paymentdate定义Map规则)。
这仅在此时间戳值的特定情况下观察到。对于其余值(即有效日期,如1993-11-30 00:00:00.0002020-11-30 00:00:00.000等)DMS正在正确复制。
如何处理这种情况?如果可能的话,我不想对paymentdate应用转换,因为它也会影响下游应用程序。

mutmk8jj

mutmk8jj1#

经过一些研究,将转换应用到DMS中,将列的数据类型转换为datetime,解决了这个问题。

{
  "rule-type": "transformation",
  "rule-id": "12345",
  "rule-name": "change-paymentdate-column-scale",
  "rule-action": "change-data-type",
  "rule-target": "column",
  "object-locator": {
    "schema-name": "public",
    "table-name": "tableABC",
    "column-name": "paymentdate"
  },
  "data-type": {
    "type": "datetime"
  }
},

字符串
有趣的是,早些时候它被隐式地转换为S3,仅为timestamp,但可能无法处理所有日期。

相关问题