Transformationsregeln und Aktionen - AWS Database Migration Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Transformationsregeln und Aktionen

Sie verwenden die Transformationsaktionen, um alle Transformationen anzugeben, die Sie auf das ausgewählte Schema, Tabelle oder Ansicht anwenden möchten. Transformationsregeln sind optional.

Einschränkungen

  • Sie können nicht mehr als eine Transformationsregelaktion auf dasselbe Objekt (Schema, Tabelle, Spalte, Tabellen-Tablespace oder Index-Tablespace) anwenden. Sie können mehrere Transformationsregelaktionen auf jeder Ebene anwenden, solange jede Transformationsaktion auf ein anderes Objekt angewendet wird.

  • Bei Tabellennamen und Spaltennamen in Transformationsregeln muss die Groß- und Kleinschreibung beachtet werden. Beispielsweise müssen Sie Tabellennamen und Spaltennamen für eine Oracle- oder Db2-Datenbank in Großbuchstaben angeben.

  • Transformationen werden für Spaltennamen in Sprachen mit Schreibrichtung von rechts nach links nicht unterstützt.

  • Transformationen können nicht für Spalten durchgeführt werden, deren Name Sonderzeichen (z. B. #, \, /, -) enthält.

  • Die einzige unterstützte Transformation für Spalten, die BLOB/CLOB-Datentypen zugeordnet sind, besteht darin, die Spalte auf dem Ziel abzulegen.

  • AWS DMS unterstützt nicht die Replikation von zwei Quelltabellen in eine einzelne Zieltabelle. AWS DMS repliziert Datensätze von Tabelle zu Tabelle und von Spalte zu Spalte gemäß den Transformationsregeln der Replikationsaufgabe. Die Objektnamen müssen eindeutig sein, um Überschneidungen zu vermeiden.

    Beispielsweise hat eine Quelltabelle eine Spalte mit dem Namen ID und die entsprechende Zieltabelle hat eine bereits existierende Spalte mit dem Namen id. Wenn eine Regel eine ADD-COLUMN-Anweisung verwendet, um eine neue Spalte mit dem Namen id hinzuzufügen, und eine SQLite-Anweisung, um die Spalte mit benutzerdefinierten Werten zu füllen, erzeugt dies ein doppeltes, mehrdeutiges Objekt mit dem Namen id und dies wird nicht unterstützt.

Werte

Für Tabellenzuweisungsregeln, die den Regeltyp "Transformation" verwenden, können Sie die folgenden Werte anwenden.

Parameter Mögliche Werte Beschreibung
rule-type transformation Ein Wert, mit dem die Regel auf jedes von der Auswahlregel festgelegte Objekt angewendet wird. Verwenden Sie transformation, falls nicht anders angegeben.
rule-id Ein numerischer Wert. Ein eindeutiger numerischer Wert zur Identifizierung der Regel. Wenn Sie mehrere Transformationsregeln für dasselbe Objekt angeben (Schema, Tabelle, Spalte, tabellenübergreifender Bereich oder Index-Tabellenbereich), AWS DMS wendet die Transformationsregel mit der niedrigeren Regel-ID an.
rule-name Ein alphanumerischer Wert. Ein eindeutiger Name zur Identifizierung der Regel.
object-locator Ein Objekt mit den folgenden Parametern:
  • schema-name – Der Name des Schemas. Für MongoDB- und Amazon-DocumentDB-Endpunkte ist dies der Name der Datenbank, die eine Reihe von Sammlungen enthält.

  • table-name – Der Name der Tabelle, Ansicht oder Sammlung.

  • table-tablespace-name – Der Name eines vorhandenen Tabellenspaces.

  • index-tablespace-name – Der Name eines vorhandenen Index-Tabellenspaces.

  • column-name – Der Name einer vorhandenen Spalte.

  • data-type – Der Name eines vorhandenen Spaltendatentyps.

Der Name der einzelnen Schemata, Tabellen oder Ansichten, Tabellen-Tabellenräume, Index-Tabellenräume und Spalten, für die die Regel gilt. Sie können das Prozentzeichen „%“ als Platzhalter für alle oder einen Teil der Werte der einzelnen object-locator-Parameter verwenden, ausgenommen data-type. Auf diese Weise können Sie diese Elemente aufeinander abstimmen:

  • Eine einzige Tabelle oder Ansicht in einem einzigen Schema

  • Eine einzige Tabelle oder Ansicht in einigen oder allen Schemas

  • Einige oder alle Tabellen und Ansichten in einem einzigen Schema

  • Einige oder alle Tabellen und Ansichten in einigen oder allen Schemas

  • Eine oder mehrere Spalten in der angegebenen Tabelle(n), Ansicht(en) oder Schema(ta).

  • Die Spalten mit einem gegebenen data-type, wenn mehrere Spalten angegeben werden. Die möglichen Werte von data-type finden Sie unter data-type nach dieser Tabelle beschrieben.

Darüber hinaus ist der Parameter table-tablespace-name oder index-tablespace-name nur verfügbar, um mit einem Oracle-Quellendpunkt übereinzustimmen. Sie können entweder table-tablespace-name oder index-tablespace-name in einer einzelnen Regel angeben, aber nicht beides. Daher können Sie eines der folgenden Elemente abstimmen:

  • Ein einzelner, einige oder alle Tabellen-Tabellenräume

  • Ein einzelner, einige oder alle Index-Tabellenräume

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

Die Transformation, die Sie auf das Objekt anwenden möchten. Bei allen Transformationsregelaktionen wird zwischen Groß- und Kleinschreibung unterschieden.

Der add-column-Wert des rule-action-Parameters fügt einer Tabelle eine Spalte hinzu. Sie können jedoch keine neue Spalte mit dem gleichen Namen wie eine vorhandene Spalte derselben Tabelle hinzufügen.

add-column gibt bei Verwendung mit den Parametern expression und data-type den Wert der neuen Spaltendaten an.

Der change-data-type-Wert für rule-action ist nur für column-Regelziele verfügbar.

Der include-column-Wert des rule-action-Parameters ändert den Modus der Tabelle, so dass standardmäßig alle Spalten gelöscht und die angegebenen Spalten eingeschlossen werden. Durch mehrmaliges Aufrufen der include-column-Regel werden mehrere Spalten in das Ziel aufgenommen.

Sie können eine define-primary-key-Regel nicht verwenden, wenn die Regel einen Platzhalter (%) in einem Schema- oder Tabellennamen enthält.

Für eine bestehende Aufgabe werden Transformationsregelaktionen, die das Zieltabellenschema ändern, wieremove-column, rename oder add-prefix, erst wirksam, wenn Sie die Aufgabe neu starten. Wenn Sie die Aufgabe nach dem Hinzufügen der Transformationsregel fortsetzen, stellen Sie möglicherweise ein unerwartetes Verhalten für die geänderte Spalte fest, zu dem auch fehlende Spaltendaten gehören können. Ein Neustart der Aufgabe ist erforderlich, um sicherzustellen, dass die Transformationsregel ordnungsgemäß funktioniert.

rule-target schema, table, column, table-tablespace, index-tablespace Der Objekttyp, den Sie transformieren.

Die Werte table-tablespace und index-tablespace sind nur für einen Oracle-Zielendpunkt verfügbar.

Stellen Sie sicher, dass Sie einen Wert für den Parameter als Teil des Namens object-locator: table-tablespace-name oder index-tablespace-name angeben.

value Ein alphanumerischer Wert, der den Benennungsregeln für den Zieltyp folgt. Der neue Wert für Aktionen, die eine Eingabe erfordern, z. B. rename.
old-value Ein alphanumerischer Wert, der den Benennungsregeln für den Zieltyp folgt. Der alte Wert für Aktionen, die Ersatz erfordern, z. B. replace-prefix.
data-type

type – Der Datentyp, der verwendet werden soll, wenn rule-action add-column ist, bzw. der Ersatzdatentyp, wenn rule-action change-data-type ist.

Oder der Name des Ersetzungsdatentyps, wenn rule-action change-data-type, der Wert von column-name "%" ist, und ein zusätzlicher data-type-Parameter zur Identifizierung des vorhandenen Datentyps in der object-locator enthalten ist.

AWS DMS unterstützt Transformationen von Spaltendatentypen für die folgenden DMS-Datentypen: "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 – Wenn der hinzugefügte Spalten- oder Ersetzungsdatentyp eine Genauigkeit aufweist, wird ein ganzzahliger Wert zur Angabe der Genauigkeit angegeben.

scale – Wenn der hinzugefügte Spalten- oder der Ersatzdatentyp eine Skala, einen Ganzzahlwert oder einen Datums-/Uhrzeitwert hat, um den Maßstab anzugeben.

length – Die Länge der neuen Spaltendaten (bei Verwendung mit add-column)

Im Folgenden sehen Sie ein Beispiel für einen data-type-Parameter zur Angabe des vorhandenen Datentyps, der ersetzt werden soll.

{ "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": "" } } ] }

Hier wird die Spalte col10 der Tabelle table_t zum Datentyp string geändert.

expression Ein alphanumerischer Wert, der der SQLite-Syntax folgt.

Bei Verwendung mit dem rule-action-Wert rename-schema gibt der expression-Parameter ein neues Schema an. Bei Verwendung mit dem rule-action-Wert rename-tablegibt expression eine neue Tabelle an. Bei Verwendung mit dem rule-action-Wert rename-column gibt expression einen neuen Spaltennamen an.

Bei Verwendung mit dem rule-action-Wert add-column gibt expression Daten an, aus denen eine neue Spalte besteht.

Beachten Sie, dass für diesen Parameter nur Ausdrücke unterstützt werden. Operatoren und Befehle werden nicht unterstützt.

Weitere Informationen zum Verwenden von Ausdrücken für Transformationsregeln finden Sie unter Verwenden von Transformationsregelausdrücken zum Definieren von Spalteninhalten.

Weitere Informationen zu SQLite-Ausdrücken finden Sie unter Verwenden von SQLite-Funktionen zum Erstellen von Ausdrücken.

primary-key-def

Ein Objekt mit den folgenden Parametern:

  • name – Der Name eines neuen Primärschlüssels oder eines eindeutigen Index für die Tabelle oder Ansicht.

  • (Optional) origin – Der Typ des eindeutigen Schlüssels, der definiert werden soll: primary-key (Standard) oder unique-index.

  • columns – Ein Array von Zeichenfolgen mit den Namen von Spalten in der Reihenfolge, in der sie im Primärschlüssel oder eindeutigen Index aufscheinen.

Dieser Parameter kann den Namen, Typ und Inhalt eines eindeutigen Schlüssels in der transformierten Tabelle oder Ansicht definieren. Dies geschieht, wenn rule-action auf define-primary-key und rule-target auf table gesetzt ist. Standardmäßig ist der eindeutige Schlüssel als Primärschlüssel definiert.
before-image-def

Ein Objekt mit den folgenden Parametern:

  • column-prefix – Ein Wert, der einem Spaltennamen vorangestellt wird. Der Standardwert ist BI_.

  • column-suffix – Ein Wert, der an den Spaltennamen angehängt wird. Der Standardwert ist leer.

  • column-filter – Erfordert einen der folgenden Werte: pk-only (Standard), non-lob (optional) und all (optional).

Dieser Parameter definiert eine Benennungskonvention zum Identifizieren der Vorher-Abbild-Spalten und gibt einen Filter an, um zu identifizieren, für welche Quellspalten Vorher-Abbild-Spalten auf dem Ziel erstellt werden können. Sie können diesen Parameter angeben, wenn rule-action auf add-before-image-columns und rule-target auf column gesetzt ist.

Setzen Sie nicht column-prefix und column-suffix auf leere Zeichenfolgen.

Wählen Sie bei column-filter folgende Optionen:

  • pk-only – Zum Hinzufügen nur von Spalten, die Teil der Primärschlüssel der Tabelle sind.

  • non-lob – Zum Hinzufügen nur von Spalten, die nicht den Typ LOB haben.

  • all – Zum Hinzufügen einer Spalte, die einen Vorher-Abbild-Wert hat.

Weitere Informationen zur Unterstützung von Vorher-Abbildern für AWS DMS -Zielendpunkte finden Sie unter:

Beispiele

Beispiel Umbenennen eines Schemas

Im folgenden Beispiel wird ein Schema von Test in Ihrer Quelle auf Test1 in Ihrem Ziel umbenannt.

{ "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" } ] }
Beispiel Umbenennen einer Tabelle

Im folgenden Beispiel wird eine Tabelle von Actor in Ihrer Quelle auf Actor1 in Ihrem Ziel umbenannt.

{ "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" } ] }
Beispiel Umbenennen einer Spalte

Im folgenden Beispiel wird eine Spalte in Tabelle Actor von first_name in Ihrer Quelle auf fname in Ihrem Zielendpunkt umbenannt.

{ "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" } ] }
Beispiel Umbenennen eines Oracle-Tabellen-Tabellenraums

Im folgenden Beispiel wird der Tabellen-Tabellenraum mit dem Namen SetSpace für eine Tabelle mit dem Namen Actor in Ihrer Oracle-Quelle auf SceneTblSpace in Ihrem Oracle-Zielendpunkt umbenannt.

{ "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" } ] }
Beispiel Umbenennen eines Oracle-Index-Tabellenraums

Im folgenden Beispiel wird der Index-Tabellenraum mit dem Namen SetISpace für eine Tabelle mit dem Namen Actor in Ihrer Oracle-Quelle auf SceneIdxSpace in Ihrem Oracle-Zielendpunkt umbenannt.

{ "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" } ] }
Beispiel Hinzufügen einer Spalte

Im folgenden Beispiel wird der Tabelle Actor im Schema test eine datetime- Spalte hinzugefügt.

{ "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 } } ] }
Beispiel Entfernen einer Spalte

Im folgenden Beispiel wird die Tabelle mit dem Namen Actor in Ihrer Quelle so transformiert, dass alle Spalten, die mit den Zeichen col beginnen, in Ihrem Ziel daraus entfernt werden.

{ "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%" } }] }
Beispiel In Kleinbuchstaben konvertieren

Im folgenden Beispiel wird ein Tabellenname von ACTOR in Ihrer Quelle auf actor in Ihrem Ziel umgewandelt.

{ "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" } }] }
Beispiel Umwandeln in Großschreibung

Im folgenden Beispiel werden alle Spalten in allen Tabellen und allen Schemata von Kleinschreibung an Ihrer Quelle in Großschreibung an Ihrem Ziel umgewandelt.

{ "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": "%" } } ] }
Beispiel Hinzufügen eines Präfix

Im folgenden Beispiel werden alle Tabellen in Ihrer Quelle so transformiert, dass ihnen das Präfix DMS_ in Ihrem Ziel hinzugefügt wird.

{ "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_" }] }
Beispiel Ersetzen eines Präfix

Im folgenden Beispiel werden alle Spalten, die das Präfix Pre_ in Ihrer Quelle enthalten, so transformiert, dass das Präfix durch NewPre_ in Ihrem Ziel ersetzt wird.

{ "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_" } ] }
Beispiel Entfernen eines Suffix

Im folgenden Beispiel werden alle Tabellen in Ihrer Quelle so transformiert, dass aus ihnen das Suffix _DMS in Ihrem Ziel entfernt wird.

{ "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" }] }
Beispiel Definieren eines Primärschlüssels

Das folgende Beispiel definiert einen Primärschlüssel mit dem Namen ITEM-primary-key auf drei Spalten der ITEM-Tabelle, die zu Ihrem Zielendpunkt migriert wurde.

{ "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" ] } }] }
Beispiel Definieren eines eindeutigen Index

Das folgende Beispiel definiert einen eindeutigen Index mit dem Namen ITEM-unique-idx auf drei Spalten der ITEM-Tabelle, die zu Ihrem Zielendpunkt migriert wurde.

{ "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" ] } }] }
Beispiel Ändern des Datentyps der Zielspalte

Im folgenden Beispiel wird der Datentyp einer Zielspalte namens SALE_AMOUNT von einem vorhandenen Datentyp in int8 geändert.

{ "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" } }
Beispiel Hinzufügen einer Vorher-Abbild-Spalte

Für eine Quellspalte mit dem Namen emp_no fügt die Transformationsregel im folgenden Beispiel eine neue Spalte mit dem Namen BI_emp_no auf dem Ziel hinzu.

{ "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" } } ] }

Hier füllt die folgende Anweisung eine BI_emp_no-Spalte in der entsprechenden Zeile mit 1.

UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;

Beim Schreiben von CDC-Aktualisierungen für unterstützte AWS DMS Ziele lässt sich BI_emp_no anhand der Spalte erkennen, welche Zeilen in der Spalte aktualisierte Werte enthalten. emp_no