Aturan dan tindakan transformasi - AWS Database Migration Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Aturan dan tindakan transformasi

Anda menggunakan tindakan transformasi untuk menentukan setiap transformasi Anda ingin menerapkan skema yang dipilih, tabel, atau tampilan. Aturan transformasi adalah opsional.

Batasan

  • Anda tidak dapat menerapkan lebih dari satu tindakan aturan transformasi terhadap objek yang sama (skema, tabel, kolom, table-tablespace, atau index-tablespace). Anda dapat menerapkan beberapa tindakan aturan transformasi pada tingkat apa pun selama setiap tindakan transformasi diterapkan terhadap objek yang berbeda.

  • Nama tabel dan nama kolom dalam aturan transformasi peka huruf besar/kecil. Misalnya, Anda harus memberikan nama tabel dan nama kolom untuk database Oracle atau Db2 dalam huruf besar.

  • Transformasi tidak didukung untuk nama kolom dengan bahasa kanan-ke-kiri.

  • Transformasi tidak dapat dilakukan pada kolom yang berisi karakter khusus (misalnya #,\,/, -) dalam namanya.

  • Satu-satunya transformasi yang didukung untuk kolom yang dipetakan ke tipe data BLOB/CLOB adalah dengan menjatuhkan kolom pada target.

  • AWS DMS tidak mendukung replikasi dua tabel sumber ke satu tabel target. AWS DMS mereplikasi catatan dari tabel ke tabel, dan dari kolom ke kolom, sesuai dengan aturan transformasi tugas replikasi. Nama objek harus unik untuk mencegah tumpang tindih.

    Misalnya, tabel sumber memiliki kolom bernama ID dan tabel target yang sesuai memiliki kolom yang sudah ada sebelumnya yang disebutid. Jika aturan menggunakan ADD-COLUMN pernyataan untuk menambahkan kolom baru yang disebutid, dan pernyataan SQLite untuk mengisi kolom dengan nilai kustom, ini menciptakan duplikat, objek ambigu bernama id dan tidak didukung.

  • Saat membuat aturan transformasi, sebaiknya gunakan data-type parameter hanya jika aturan pemilihan menentukan beberapa kolom, misalnya, saat Anda column-name menyetelnya%. Kami tidak menyarankan menggunakan data-type untuk memilih satu kolom.

Nilai

Untuk aturan pemetaan tabel yang menggunakan jenis aturan transformasi, Anda dapat menerapkan nilai berikut.

Parameter Kemungkinan nilai Deskripsi
rule-type transformation Nilai yang berlaku aturan untuk setiap objek yang ditentukan oleh aturan seleksi. Gunakantransformationkecuali dinyatakan lain.
rule-id Nilai numerik. Nilai numerik yang unik untuk mengidentifikasi aturan. Jika Anda menentukan beberapa aturan transformasi untuk objek yang sama (skema, tabel, kolom, ruang antar-tabel, atau ruang tabel indeks), AWS DMS terapkan aturan transformasi dengan rule-id yang lebih rendah.
rule-name Nilai alfanumerik. Nama unik untuk mengidentifikasi aturan.
object-locator Objek dengan parameter berikut:
  • schema-name— Nama skema. Untuk titik akhir MongoDB dan Amazon DocumentDB, ini adalah nama database yang menyimpan satu set koleksi.

  • table-name— Nama tabel, tampilan, atau koleksi.

  • table-tablespace-name— Nama tablespace tabel yang ada.

  • index-tablespace-name— Nama tablespace indeks yang ada.

  • column-name— Nama kolom yang ada.

  • data-type— Nama tipe data kolom yang ada.

Nama setiap skema, tabel atau tampilan, tabel tablespace, tablespace indeks, dan kolom yang aturan berlaku. Anda dapat menggunakan tanda persen “%” sebagai wildcard untuk semua atau sebagian dari nilai di setiap parameter object-locator, kecuali data-type. Dengan demikian, Anda bisa mencocokkan barang-barang ini:

  • Sebuah meja tunggal atau tampilan dalam skema tunggal

  • Sebuah tabel tunggal atau tampilan dalam beberapa atau semua skema

  • Beberapa atau semua tabel dan pandangan dalam skema tunggal

  • Beberapa atau semua tabel dan pandangan dalam beberapa atau semua skema

  • Satu atau lebih kolom dalam tabel tertentu atau tabel, pandangan atau pandangan, dan skema atau skema.

  • Sebaiknya gunakan data-type parameter hanya jika aturan pemilihan menentukan beberapa kolom, misalnya, saat Anda menyetel column-name ke%. Kami tidak menyarankan menggunakan parameter ini untuk satu kolom.

Juga, parameter table-tablespace-name atau index-tablespace-name ini hanya tersedia untuk mencocokkan titik akhir sumber Oracle. Anda dapat menentukan baiktable-tablespace-nameatauindex-tablespace-namedalam satu aturan, tetapi tidak keduanya. Dengan demikian, Anda bisa mencocokkanbaikitem berikut:

  • Satu, beberapa, atau semua tablespace meja

  • Satu, beberapa, atau semua tablespace indeks

rule-action

add-column, include-column, remove-column

rename

convert-lowercase, convert-uppercase

add-prefix, remove-prefix, replace-prefix

add-suffix, remove-suffix, replace-suffix

define-primary-key

change-data-type

add-before-image-columns

Transformasi yang ingin Anda terapkan ke objek. Semua tindakan aturan transformasi peka huruf besar-kecil.

Nilai add-column dari parameter rule-action menambahkan kolom ke tabel. Tetapi Anda tidak dapat menambahkan kolom baru dengan nama yang sama dengan kolom yang ada dari tabel yang sama.

Ketika digunakan denganexpressiondandata-typeParameter,add-columnmenentukan nilai data kolom baru.

Nilai change-data-type untuk rule-action hanya tersedia untuk column target aturan.

Nilai include-column dari parameter rule-action mengubah modus tabel ke jatuhkan semua kolom secara default dan sertakan kolom yang ditentukan. Beberapa kolom termasuk dalam target dengan menerapkaninclude-columnaturan beberapa kali.

Anda tidak dapat menggunakan define-primary-key aturan ketika aturan memiliki wildcard (%) dalam skema atau nama tabel.

Untuk tugas yang ada, tindakan aturan transformasi yang mengubah skema tabel target sepertiremove-column,rename, atau tidak add-prefix akan berlaku sampai Anda memulai ulang tugas. Jika Anda melanjutkan tugas setelah menambahkan aturan transformasi, Anda mungkin melihat perilaku tak terduga untuk kolom yang diubah, yang mungkin menyertakan data kolom yang hilang. Diperlukan restart tugas untuk memastikan aturan transformasi berfungsi dengan baik.

rule-target schema, table, column, table-tablespace, index-tablespace Jenis objek yang Anda ubah.

Parametertable-tablespacedanindex-tablespacenilai hanya tersedia untuk Oracle target endpoint.

Pastikan untuk menentukan nilai untuk parameter yang Anda tentukan sebagai bagian dariobject-locator:table-tablespace-nameatauindex-tablespace-namenama.

value Nilai alfanumerik yang mengikuti aturan penamaan untuk jenis target. Nilai baru untuk tindakan yang memerlukan masukan, sepertirename.
old-value Nilai alfanumerik yang mengikuti aturan penamaan untuk jenis target. Nilai lama untuk tindakan yang memerlukan penggantian, sepertireplace-prefix.
data-type

type— Tipe data untuk digunakan jikarule-actionadalahadd-columnatau tipe data pengganti jikarule-actionadalahchange-data-type.

Atau, nama tipe data pengganti saat rule-action adalah change-data-type, nilai dari column-name adalah "%", dan parameter data-type tambahan untuk mengidentifikasi tipe data yang ada termasuk dalam object-locator.

AWS DMS mendukung transformasi tipe data kolom untuk tipe data DMS berikut: "bytes", "date", "time", "datetime", "int1", "int2", "int4", "int8", "numeric", "real4", "real8", "string", "uint1", "uint2", "uint4", "uint8", "wstring", "blob", "nclob", "clob", "boolean", "set", "list" "map", "tuple"

precision— Jika kolom ditambahkan atau tipe data pengganti memiliki presisi, nilai integer untuk menentukan presisi.

scale— Jika kolom tambahan atau tipe data pengganti memiliki skala, nilai integer atau nilai waktu tanggal untuk menentukan skala.

length— Panjang data kolom baru (bila digunakan denganadd-column)

Berikut ini adalah contoh parameter data-type untuk menentukan tipe data yang ada untuk diganti.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "table_t", "column-name": "col10" }, "rule-action": "change-data-type", "data-type": { "type": "string", "length": "4092", "scale": "" } } ] }

Di sini, col10 kolom table_t tabel diubah menjadi tipe string data.

expression Nilai alfanumerik yang mengikuti sintaks SQLite.

Ketika digunakan denganrule-actiondiatur kerename-schema,expressionparameter menentukan skema baru. Ketika digunakan denganrule-actiondiatur kerename-table,expressionmenentukan tabel baru. Ketika digunakan denganrule-actiondiatur kerename-column,expressionmenentukan nilai nama kolom baru.

Ketika digunakan denganrule-actiondiatur keadd-column,expressionmenentukan data yang membentuk kolom baru.

Perhatikan bahwa hanya ekspresi yang didukung untuk parameter ini. Operator dan perintah tidak didukung.

Untuk informasi selengkapnya tentang penggunaan ekspresi untuk aturan transformasi, lihatMenggunakan ekspresi aturan transformasi untuk menentukan isi kolom.

Untuk informasi selengkapnya tentang ekspresi SQLite, lihatMenggunakan fungsi SQLite untuk membangun ekspresi.

primary-key-def

Objek dengan parameter berikut:

  • name— Nama kunci primer baru atau indeks unik untuk tabel atau tampilan.

  • (Opsional)origin— Jenis kunci unik untuk mendefinisikan:primary-key(default) atauunique-index.

  • columns— Sebuah array string daftar nama kolom dalam urutan mereka muncul dalam kunci primer atau indeks unik.

Parameter ini dapat menentukan nama, jenis, dan isi dari kunci unik pada tabel atau tampilan yang diubah. Hal itu dilakukan ketikarule-actiondiatur kedefine-primary-keydanrule-targetdiatur ketable. Secara default, kunci unik didefinisikan sebagai kunci primer.
before-image-def

Objek dengan parameter berikut:

  • column-prefix— Nilai ditambahkan ke nama kolom. Nilai default-nya adalah BI_.

  • column-suffix— Nilai ditambahkan ke nama kolom. Nilai default adalah (kosong).

  • column-filterMembutuhkan salah satu nilai berikut:pk-only(default),non-lob(opsional) danall(opsional).

Parameter ini mendefinisikan konvensi penamaan untuk mengidentifikasi kolom citra sebelumnya dan menentukan filter untuk mengidentifikasi kolom sumber mana yang dapat memiliki kolom citra sebelumnya dibuat untuk mereka pada target. Anda dapat menentukan parameter ini ketikarule-actiondiatur keadd-before-image-columnsdanrule-targetdiatur kecolumn.

Jangan atur keduanyacolumn-prefixdancolumn-suffixuntuk mengosongkan string.

Untukcolumn-filter, pilih:

  • pk-only— Untuk menambahkan hanya kolom yang merupakan bagian dari kunci primer tabel.

  • non-lob— Untuk menambahkan hanya kolom yang tidak tipe LOB.

  • all— Untuk menambahkan kolom yang memiliki nilai sebelum-gambar.

Untuk informasi lebih lanjut tentang dukungan sebelum-gambar untuk AWS DMS target endpoint, lihat:

Contoh

contoh Ubah Nama Skema

Contoh berikut mengganti nama skema dariTestdi sumber Anda untukTest1dalam target Anda.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "Test" }, "value": "Test1" } ] }
contoh Ubah Nama Tabel

Contoh berikut mengganti nama tabel dariActordi sumber Anda untukActor1dalam target Anda.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "Test", "table-name": "Actor" }, "value": "Actor1" } ] }
contoh Ubah Nama Kolom

Contoh berikut mengganti nama kolom dalam tabelActordarifirst_namedi sumber Anda untukfnamedalam target Anda.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" }, "value": "fname" } ] }
contoh Mengubah nama tablespace tabel Oracle

Contoh berikut mengganti nama tablespace tabel bernamaSetSpaceuntuk sebuah tabel bernamaActordi sumber Oracle Anda untukSceneTblSpacedi titik akhir target Oracle Anda.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetSpace" }, "value": "SceneTblSpace" } ] }
contoh Mengubah nama sebuah tablespace indeks Oracle

Contoh berikut mengganti nama tablespace indeks bernamaSetISpaceuntuk sebuah tabel bernamaActordi sumber Oracle Anda untukSceneIdxSpacedi titik akhir target Oracle Anda.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetISpace" }, "value": "SceneIdxSpace" } ] }
contoh Tambahkan kolom

Contoh berikut menambahkandatetimekolom ke tabelActordalam skematest.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "actor" }, "value": "last_updated", "data-type": { "type": "datetime", "precision": 6 } } ] }
contoh Hapus kolom

Contoh berikut mengubah tabel bernamaActordi sumber Anda untuk menghapus semua kolom yang dimulai dengan karaktercoldari itu di target Anda.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
contoh Mengkonversi ke lowercase

Contoh berikut mengkonversi nama tabel dariACTORdi sumber Anda untukactordalam target Anda.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "ACTOR" } }] }
contoh Mengkonversi ke huruf besar

Contoh berikut mengkonversi semua kolom di semua tabel dan semua skema dari huruf kecil di sumber Anda untuk huruf besar dalam target Anda.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ] }
contoh Tambahkan prefiks

Contoh berikut mengubah semua tabel di sumber Anda untuk menambahkan awalanDMS_kepada mereka dalam target Anda.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "DMS_" }] }
contoh Ganti awalan

Contoh berikut mengubah semua kolom yang berisi awalanPre_di sumber anda untuk mengganti awalan denganNewPre_dalam target Anda.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" }, "value": "NewPre_", "old-value": "Pre_" } ] }
contoh Hapus sufiks

Contoh berikut mengubah semua tabel di sumber Anda untuk menghapus akhiran_DMSdari mereka di target Anda.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "_DMS" }] }
contoh Mendefinisikan kunci primer

Contoh berikut mendefinisikan kunci primer bernamaITEM-primary-keypada tiga kolomITEMtabel bermigrasi ke titik akhir target Anda.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-primary-key", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
contoh Tentukan indeks yang unik

Contoh berikut mendefinisikan indeks unik bernamaITEM-unique-idxpada tiga kolomITEMtabel bermigrasi ke titik akhir target Anda.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-unique-idx", "origin": "unique-index", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
contoh Mengubah tipe data dari kolom target

Contoh berikut mengubah tipe data dari kolom target bernamaSALE_AMOUNTdari tipe data yang ada keint8.

{ "rule-type": "transformation", "rule-id": "1", "rule-name": "RuleName 1", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "dbo", "table-name": "dms", "column-name": "SALE_AMOUNT" }, "data-type": { "type": "int8" } }
contoh Tambahkan kolom gambar sebelum

Untuk kolom sumber bernamaemp_no, aturan transformasi dalam contoh berikut menambahkan kolom baru bernamaBI_emp_notarget.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "employees" }, "rule-action": "add-before-image-columns", "before-image-def": { "column-prefix": "BI_", "column-suffix": "", "column-filter": "pk-only" } } ] }

Di sini, pernyataan berikut populatesBI_emp_nokolom di baris yang sesuai dengan 1.

UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;

Saat menulis pembaruan CDC ke AWS DMS target yang didukung, BI_emp_no kolom memungkinkan untuk mengetahui baris mana yang memiliki nilai terbaru di emp_no kolom.