首页 > 解决方案 > AWS DMS mysql 到 DDB 阵列

问题描述

我在mysql中有一个以json列表格式存储的varchar,即:

['item1', 'item2']

我只需要通过 DMS 将数据发送到 DynamoDB 并将其存储为 DynamoDB Array,即它应该存储为:

"my_column": {
  "L": [
    {
      "S": "item_1"
    },
    {
      "S": "item_2"
    }
  ]
}

我已经有了一些快速映射规则来转换时间戳并告诉主键和排序键属性

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "my_mysql_db",
        "table-name": "my_mysql_table"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "object-mapping",
      "rule-id": "2",
      "rule-name": "2",
      "rule-action": "map-record-to-record",
      "object-locator": {
        "schema-name": "my_mysql_db",
        "table-name": "my_mysql_table"
      },
      "target-table-name": "my_ddb_target",
      "mapping-parameters": {
        "partition-key-name": "account_id",
        "sort-key-name": "id",
        "exclude-columns": [
          "created_at",
          "updated_at",
          "created_at_ts",
          "updated_at_ts"
        ],
        "attribute-mappings": [
          {
            "target-attribute-name": "account_id",
            "attribute-type": "scalar",
            "attribute-sub-type": "string",
            "value": "${account_id}"
          },
          {
            "target-attribute-name": "id",
            "attribute-type": "scalar",
            "attribute-sub-type": "string",
            "value": "${id}"
          },
          {
            "target-attribute-name": "created_at",
            "attribute-type": "scalar",
            "attribute-sub-type": "number",
            "value": "${created_at_ts}"
          },
          {
            "target-attribute-name": "updated_at",
            "attribute-type": "scalar",
            "attribute-sub-type": "number",
            "value": "${updated_at_ts}"
          }
        ]
      }
    }
  ]
}

我尝试过类似的方法:

{
  "rule-type": "transformation",
  "rule-id": "1",
  "rule-name": "RuleName 1",
  "rule-action": "change-data-type",
  "rule-target": "column",
  "object-locator": {
    "schema-name": "my_mysql_db",
    "table-name": "my_mysql_table",
    "column-name": "list_items",
    "data-type": "string"
  },
  "data-type": {
    "type": "list"
  }
}

但是它出错并且不允许我将它与其他规则一起保存,而且,我尝试按照文档重命名该列,就像array_my_column并且也没有工作。

我希望得到一些已经进行 sql 到 ddb 数组迁移的人的反馈。

标签: amazon-web-servicesamazon-dynamodbaws-dms

解决方案


推荐阅读