Migrieren Sie CLOB Oracle-Werte in einzelne Zeilen in Postgre on SQL AWS - AWS Prescriptive Guidance

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.

Migrieren Sie CLOB Oracle-Werte in einzelne Zeilen in Postgre on SQL AWS

Erstellt von Sai Krishna Namburu () und Sindhusha Paturu () AWS AWS

Umgebung: PoC oder Pilotprojekt

Quelle: Oracle-Datenbank

Ziel: Aurora SQL Postgre-Compatible oder Amazon RDS for Postgre SQL

R-Typ: Replatform

Arbeitslast: Oracle; Open Source

Technologien: Migration; Speicher und Backup; Datenbanken

AWSDienste: Amazon Aurora AWSDMS; Amazon S3; Amazon RDS

Übersicht

Dieses Muster beschreibt, wie die Werte von Oracle Character Large Object (CLOB) in Amazon Aurora Postgre SQL -Compatible Edition und Amazon Relational Database Service (AmazonRDS) for Postgre in einzelne Zeilen aufgeteilt werden. SQL Postgre unterstützt den SQL Datentyp nicht. CLOB

Tabellen mit Intervallpartitionen werden in der Oracle-Quelldatenbank identifiziert, und der Tabellenname, der Partitionstyp, das Intervall der Partition und andere Metadaten werden erfasst und in die Zieldatenbank geladen. Sie können CLOB Daten mit einer Größe von weniger als 1 GB als Text in Zieltabellen laden, indem Sie AWS Database Migration Service (AWSDMS) verwenden, oder Sie können die Daten im CSV Format exportieren, sie in einen Amazon Simple Storage Service (Amazon S3) -Bucket laden und in Ihre SQL Postgre-Zieldatenbank migrieren.

Nach der Migration können Sie den benutzerdefinierten SQL Postgre-Code verwenden, der mit diesem Muster bereitgestellt wird, um die CLOB Daten basierend auf der neuen Zeilenzeichen-ID (CHR(10)) in einzelne Zeilen aufzuteilen und die Zieltabelle zu füllen. 

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Eine Oracle-Datenbanktabelle mit Intervallpartitionen und Datensätzen mit einem CLOB Datentyp.

  • Eine Aurora SQL Postgre-Compatible- oder Amazon RDS for SQL Postgre-Datenbank mit einer Tabellenstruktur, die der Quelltabelle ähnelt (dieselben Spalten und Datentypen).

Einschränkungen

  • Der CLOB Wert darf 1 GB nicht überschreiten.

  • Jede Zeile in der Zieltabelle muss eine neue Zeilenzeichen-ID haben.

Produktversionen

  • Oracle 12c

  • Aurora Postgres 11.6

Architektur

Das folgende Diagramm zeigt eine Oracle-Quelltabelle mit CLOB Daten und die entsprechende SQL Postgre-Tabelle in Aurora SQL Postgre-Compatible Version 11.6.

CLOBQuelltabelle und entsprechende Postgre-Zieltabelle. SQL

Tools

AWSDienstleistungen

Andere Tools

Sie können die folgenden Client-Tools verwenden, um eine Verbindung zu Ihren Aurora SQL Postgre-Compatible- und Amazon RDS for SQL Postgre-Datenbanken herzustellen, darauf zuzugreifen und diese zu verwalten. (Diese Tools werden in diesem Muster nicht verwendet.)

  • pgAdminist ein Open-Source-Verwaltungstool für SQL Postgre. Es bietet eine grafische Oberfläche, mit der Sie Datenbankobjekte erstellen, verwalten und verwenden können.

  • DBeaverist ein Open-Source-Datenbanktool für Entwickler und Datenbankadministratoren. Sie können das Tool verwenden, um Ihre Daten zu manipulieren, zu überwachen, zu analysieren, zu verwalten und zu migrieren.

Bewährte Methoden

Bewährte Methoden für die Migration Ihrer Datenbank von Oracle zu Postgre SQL finden Sie im AWS Blogbeitrag Bewährte Methoden für die Migration einer Oracle-Datenbank zu Amazon RDS Postgre SQL oder Amazon Aurora PostgreSQL: Überlegungen zum Migrationsprozess und zur Infrastruktur.

Bewährte Methoden für die Konfiguration der AWS DMS Aufgabe für die Migration großer binärer Objekte finden Sie in der Dokumentation unter Migration großer binärer Objekte (). LOBs AWS DMS

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Analysieren Sie die CLOB Daten.

Analysieren Sie die CLOB Daten in der Oracle-Quelldatenbank, um festzustellen, ob sie Spaltenüberschriften enthalten, sodass Sie die Methode zum Laden der Daten in die Zieltabelle festlegen können. 

Verwenden Sie die folgende Abfrage, um die Eingabedaten zu analysieren.

SELECT * FROM clobdata_or;  

Developer

Laden Sie die CLOB Daten in die Zieldatenbank.

Migrieren Sie die Tabelle mit CLOB Daten in eine Zwischentabelle (Staging) in der Aurora- oder RDS Amazon-Zieldatenbank. Sie können die Daten verwenden AWS DMS oder als CSV Datei in einen Amazon S3 S3-Bucket hochladen.

Informationen zur Verwendung AWS DMS für diese Aufgabe finden Sie in der AWS DMS Dokumentation unter Verwenden einer Oracle-Datenbank als Quelle und Verwenden einer SQL Postgre-Datenbank als Ziel.

Informationen zur Verwendung von Amazon S3 für diese Aufgabe finden Sie in der AWS DMS Dokumentation unter Amazon S3 als Ziel verwenden.

Migrationsingenieur, DBA

Validieren Sie die SQL Postgre-Zieltabelle.

Validieren Sie die Zieldaten, einschließlich der Header, anhand der Quelldaten, indem Sie die folgenden Abfragen in der Zieldatenbank verwenden.

SELECT * FROM clobdata_pg; SELECT * FROM clobdatatarget;

Vergleichen Sie die Ergebnisse mit den Abfrageergebnissen aus der Quelldatenbank (ab dem ersten Schritt).

Developer

Teilen Sie die CLOB Daten in separate Zeilen auf.

Führen Sie den benutzerdefinierten SQL Postgre-Code aus, der im Abschnitt Zusätzliche Informationen bereitgestellt wird, um die CLOB Daten aufzuteilen und sie in separate Zeilen in der Postgre-Zieltabelle einzufügen. SQL

Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Überprüfen Sie die Daten in der Zieltabelle.

Überprüfen Sie die in die Zieltabelle eingefügten Daten mithilfe der folgenden Abfragen.

SELECT * FROM clobdata_pg; SELECT * FROM clobdatatarget;
Developer

Zugehörige Ressourcen

Zusätzliche Informationen

SQLPostgre-Funktion zum Teilen von Daten CLOB

do $$ declare totalstr varchar; str1 varchar; str2 varchar; pos1 integer := 1; pos2 integer ; len integer; begin select rawdata||chr(10) into totalstr from clobdata_pg; len := length(totalstr) ; raise notice 'Total length : %',len; raise notice 'totalstr : %',totalstr; raise notice 'Before while loop'; while pos1 < len loop select position (chr(10) in totalstr) into pos2; raise notice '1st position of new line : %',pos2; str1 := substring (totalstr,pos1,pos2-1); raise notice 'str1 : %',str1; insert into clobdatatarget(data) values (str1); totalstr := substring(totalstr,pos2+1,len); raise notice 'new totalstr :%',totalstr; len := length(totalstr) ; end loop; end $$ LANGUAGE 'plpgsql' ;

Beispiele für Eingabe und Ausgabe

Sie können die folgenden Beispiele verwenden, um den SQL Postgre-Code auszuprobieren, bevor Sie Ihre Daten migrieren.

Erstellen Sie eine Oracle-Datenbank mit drei Eingabezeilen.

CREATE TABLE clobdata_or ( id INTEGER GENERATED ALWAYS AS IDENTITY, rawdata clob ); insert into clobdata_or(rawdata) values (to_clob('test line 1') || chr(10) || to_clob('test line 2') || chr(10) || to_clob('test line 3') || chr(10)); COMMIT; SELECT * FROM clobdata_or;

Dadurch wird die folgende Ausgabe angezeigt.

id

Rohdaten

1

Testlinie 1 Testlinie 2 Testlinie 3

Laden Sie die Quelldaten zur Verarbeitung in eine SQL Postgre-Staging-Tabelle (clobdata_pg).

SELECT * FROM clobdata_pg; CREATE TEMP TABLE clobdatatarget (id1 SERIAL,data VARCHAR ); <Run the code in the additional information section.> SELECT * FROM clobdatatarget;

Dadurch wird die folgende Ausgabe angezeigt.

id1

data

1

Testlinie 1

2

Testlinie 2

3

Testlinie 3