skip to Main Content

I have two identical databases, with two identical tables. The source database’s table has data and the target database’s table has no data.

The tables in both databases are named testt.

What the data looks like now in the source database

id   name
----------
1    tim
2    bob
3    john

What I want the testt table to look like after the migration:

id   name
---------------------------
1    0wg9jg-wjeigwg-jieg
2    jwigj-iwjgw-ijgg
3    wjeoiweg-wjegiweg-jei

I just need the content of the name column in testt on the target database to be hashed (or any uuid is fine).

My attempt:

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "SelectTable",
      "object-locator": {
        "schema-name": "public",
        "table-name": "testt"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "HashNameColumn",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "public",
        "table-name": "testt",
        "column-name": "name"
      },
      "rule-action": "transform",
      "expression": "sha256($column)",
      "rule-description": "hasing on the name column"
    }
  ]
}

When I use this on AWS’s console it just gives a super generic invalid expression error.

Any help would be greatly appreciated! Thanks.

2

Answers


  1. Chosen as BEST ANSWER

    You cannot directly edit an existing column in that way. You have to use a temp db and first hash it in a new column and then transfer it back. It's explained really well here: https://blog.saeloun.com/2021/11/21/pii-removal-aws-dms/


  2. It appears that you are using an undocumented function. I bet you can use hash_sha256(x) instead. See hash_sha256()

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search