Migrez CLOB les valeurs Oracle vers des lignes individuelles dans Postgre SQL sur AWS - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Migrez CLOB les valeurs Oracle vers des lignes individuelles dans Postgre SQL sur AWS

Créé par Sai Krishna Namburu (AWS) et Sindhusha Paturu () AWS

Environnement : PoC ou pilote

Source : base de données Oracle

Cible : Aurora Postgre SQL -Compatible ou Amazon RDS pour Postgre SQL

Type R : Replateforme

Charge de travail : Oracle ; logiciel libre

Technologies : migration ; stockage et sauvegarde ; bases de données

AWSservices : Amazon Aurora AWS DMS ; Amazon S3 ; Amazon RDS

Récapitulatif

Ce modèle décrit comment diviser les valeurs Oracle Character Large Object (CLOB) en lignes individuelles dans Amazon Aurora Postgre SQL -Compatible Edition et Amazon Relational Database Service (AmazonRDS) pour Postgre. SQL Postgre SQL ne prend pas en charge ce type de CLOB données.

Les tables comportant des partitions par intervalles sont identifiées dans la base de données Oracle source, et le nom de la table, le type de partition, l'intervalle de la partition et les autres métadonnées sont capturés et chargés dans la base de données cible. Vous pouvez charger CLOB des données d'une taille inférieure à 1 Go dans les tables cibles sous forme de texte à l'aide de AWS Database Migration Service (AWSDMS), ou vous pouvez exporter les données CSV au format, les charger dans un bucket Amazon Simple Storage Service (Amazon S3) et les migrer vers votre base de données Postgre cibleSQL.

Après la migration, vous pouvez utiliser le SQL code Postgre personnalisé fourni avec ce modèle pour diviser les CLOB données en lignes individuelles en fonction du nouvel identifiant de caractère de ligne (CHR(10)) et remplir la table cible

Conditions préalables et limitations

Prérequis

  • Table de base de données Oracle comportant des partitions d'intervalles et des enregistrements contenant un type de CLOB données.

  • Une SQL base de données SQL compatible avec Aurora Postgre ou Amazon RDS pour Postgre dotée d'une structure de table similaire à celle de la table source (mêmes colonnes et types de données).

Limites

  • La CLOB valeur ne peut pas dépasser 1 Go.

  • Chaque ligne de la table cible doit avoir un nouvel identifiant de caractère de ligne.

Versions du produit

  • Oracle 12c

  • Aurora Postgres 11.6

Architecture

Le schéma suivant montre une table Oracle source contenant CLOB des données et la table Postgre équivalente dans la version SQL 11.6 d'Aurora Postgre SQL -Compatible.

CLOBTable source et table Postgre cible équivalenteSQL.

Outils

AWSservices

Autres outils

Vous pouvez utiliser les outils clients suivants pour vous connecter, accéder et gérer vos bases de données Aurora Postgre SQL -Compatible et Amazon RDS for SQL Postgre. (Ces outils ne sont pas utilisés dans ce modèle.)

  • pgAdminest un outil de gestion open source pour SQL Postgre. Il fournit une interface graphique qui vous permet de créer, de gérer et d'utiliser des objets de base de données.

  • DBeaverest un outil de base de données open source destiné aux développeurs et aux administrateurs de bases de données. Vous pouvez utiliser cet outil pour manipuler, surveiller, analyser, administrer et migrer vos données.

Bonnes pratiques

Pour connaître les meilleures pratiques relatives à la migration de votre base de données d'Oracle vers PostgreSQL, consultez le billet de AWS blog Meilleures pratiques pour la migration d'une base de données Oracle vers Amazon Postgre ou RDS Amazon SQL Aurora Postgre SQL : considérations relatives au processus de migration et à l'infrastructure.

Pour connaître les meilleures pratiques relatives à la configuration de la AWS DMS tâche de migration d'objets binaires de grande taille, consultez la section Migration d'objets binaires de grande taille (LOBs) dans la AWS DMS documentation.

Épopées

TâcheDescriptionCompétences requises

Analysez les CLOB données.

Dans la base de données Oracle source, analysez les CLOB données pour voir si elles contiennent des en-têtes de colonne, afin de déterminer la méthode de chargement des données dans la table cible. 

Pour analyser les données d'entrée, utilisez la requête suivante.

SELECT * FROM clobdata_or;  

Developer

Chargez les CLOB données dans la base de données cible.

Migrez la table contenant CLOB des données vers une table intermédiaire (intermédiaire) dans la base de données RDS cible Aurora ou Amazon. Vous pouvez utiliser AWS DMS ou télécharger les données sous forme de CSV fichier dans un compartiment Amazon S3.

Pour plus d'informations sur l'utilisation AWS DMS de cette tâche, consultez les sections Utilisation d'une base de données Oracle comme source et Utilisation d'une SQL base de données Postgre comme cible dans la AWS DMS documentation.

Pour plus d'informations sur l'utilisation d'Amazon S3 pour cette tâche, consultez la section Utilisation d'Amazon S3 comme cible dans la AWS DMS documentation.

Ingénieur en migration, DBA

Validez la SQL table Postgre cible.

Validez les données cibles, y compris les en-têtes, par rapport aux données source en utilisant les requêtes suivantes dans la base de données cible.

SELECT * FROM clobdata_pg; SELECT * FROM clobdatatarget;

Comparez les résultats aux résultats des requêtes de la base de données source (dès la première étape).

Developer

Divisez les CLOB données en lignes distinctes.

Exécutez le SQL code Postgre personnalisé fourni dans la section Informations supplémentaires pour diviser les CLOB données et les insérer dans des lignes distinctes dans la table Postgre SQL cible.

Developer
TâcheDescriptionCompétences requises

Validez les données de la table cible.

Validez les données insérées dans la table cible à l'aide des requêtes suivantes.

SELECT * FROM clobdata_pg; SELECT * FROM clobdatatarget;
Developer

Ressources connexes

Informations supplémentaires

SQLFonction Postgre pour diviser les données 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' ;

Exemples d'entrée et de sortie

Vous pouvez utiliser les exemples suivants pour tester le SQL code Postgre avant de migrer vos données.

Créez une base de données Oracle avec trois lignes de saisie.

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;

Cela affiche le résultat suivant.

id

données brutes

1

ligne de test 1 ligne de test 2 ligne de test 3

Chargez les données sources dans une table SQL intermédiaire Postgre (clobdata_pg) pour les traiter.

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

Cela affiche le résultat suivant.

id1

data

1

ligne de test 1

2

ligne de test 2

3

ligne de test 3