

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esegui la migrazione dei valori Oracle CLOB su singole righe in PostgreSQL su AWS
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws"></a>

*Sai Krishna Namburu e Sindhusha Paturu, Amazon Web Services*

## Riepilogo
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-summary"></a>

Questo modello descrive come suddividere i valori di Oracle Character Large Object (CLOB) in singole righe in Amazon Aurora PostgreSQL Compatible Edition e Amazon Relational Database Service (Amazon RDS) per PostgreSQL. PostgreSQL non supporta il tipo di dati CLOB.

Le tabelle con partizioni a intervalli vengono identificate nel database Oracle di origine e il nome della tabella, il tipo di partizione, l'intervallo della partizione e altri metadati vengono acquisiti e caricati nel database di destinazione. Puoi caricare dati CLOB di dimensioni inferiori a 1 GB nelle tabelle di destinazione come testo utilizzando AWS Database Migration Service (AWS DMS) oppure puoi esportare i dati in formato CSV, caricarli in un bucket Amazon Simple Storage Service (Amazon S3) e migrarli nel database PostgreSQL di destinazione.

Dopo la migrazione, puoi utilizzare il codice PostgreSQL personalizzato fornito con questo modello per dividere i dati CLOB in singole righe in base al nuovo identificatore `CHR(10)` di caratteri di riga () e compilare la tabella di destinazione.**** 

## Prerequisiti e limitazioni
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-prereqs"></a>

**Prerequisiti**
+ Una tabella di database Oracle con partizioni e record a intervalli con un tipo di dati CLOB.
+ Un database compatibile con Aurora PostgreSQL o Amazon RDS for PostgreSQL con una struttura di tabella simile alla tabella di origine (stesse colonne e tipi di dati).

**Limitazioni**
+ Il valore CLOB non può superare 1 GB.
+ Ogni riga della tabella di destinazione deve avere un nuovo identificatore di carattere di riga.

**Versioni del prodotto**
+ Oracle 12c
+ Aurora Postgres 11.6

## Architecture
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-architecture"></a>

Il diagramma seguente mostra una tabella Oracle di origine con dati CLOB e la tabella PostgreSQL equivalente nella versione 11.6 compatibile con Aurora PostgreSQL.

![\[Tabella CLOB di origine e tabella PostgreSQL di destinazione equivalente.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/55806ee7-6a9f-4058-9a47-a07de68223ca/images/79b9d4b9-6f20-4db5-8ca8-2a599769a498.png)


## Tools (Strumenti)
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-tools"></a>

**Servizi AWS**
+ [Amazon Aurora PostgreSQL Compatible Edition è un motore](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) di database relazionale completamente gestito e conforme ad ACID che ti aiuta a configurare, gestire e scalare le distribuzioni PostgreSQL.
+ [Amazon Relational Database Service (Amazon RDS) per PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) ti aiuta a configurare, gestire e scalare un database relazionale PostgreSQL nel cloud AWS.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) ti aiuta a migrare gli archivi di dati nel cloud AWS o tra combinazioni di configurazioni cloud e locali.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Altri strumenti**

Puoi utilizzare i seguenti strumenti client per connetterti, accedere e gestire i tuoi database Aurora compatibili con PostgreSQL e Amazon RDS for PostgreSQL. (Questi strumenti non vengono utilizzati all'interno di questo schema).
+ [pgAdmin](https://www.pgadmin.org/) è uno strumento di gestione open source per PostgreSQL. Fornisce un'interfaccia grafica che consente di creare, gestire e utilizzare oggetti di database.
+ [DBeaver](https://dbeaver.io/)è uno strumento di database open source per sviluppatori e amministratori di database. È possibile utilizzare lo strumento per manipolare, monitorare, analizzare, amministrare e migrare i dati.

## Best practice
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-best-practices"></a>

Per le best practice per la migrazione del database da Oracle a PostgreSQL, consulta il [post sul blog AWS Best practice for migrating an Oracle database to Amazon RDS PostgreSQL o Amazon Aurora PostgreSQL: considerazioni sul processo di migrazione e sull'infrastruttura](https://aws.amazon.com/blogs/database/best-practices-for-migrating-an-oracle-database-to-amazon-rds-postgresql-or-amazon-aurora-postgresql-migration-process-and-infrastructure-considerations/).

Per le best practice per la configurazione del task AWS DMS per la migrazione di oggetti binari di grandi dimensioni, consulta [Migrating large binary objects () LOBs nella](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html#CHAP_BestPractices.LOBS) documentazione di AWS DMS.

## Epiche
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-epics"></a>

### Identifica i dati CLOB
<a name="identify-the-clob-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Analizza i dati CLOB. | Nel database Oracle di origine, analizza i dati CLOB per vedere se contengono intestazioni di colonna, in modo da poter determinare il metodo di caricamento dei dati nella tabella di destinazione. Per analizzare i dati di input, utilizzare la seguente query.`SELECT * FROM clobdata_or;  ` | Developer | 
| Caricate i dati CLOB nel database di destinazione. | Esegui la migrazione della tabella con dati CLOB a una tabella provvisoria (staging) nel database di destinazione Aurora o Amazon RDS. Puoi utilizzare AWS DMS o caricare i dati come file CSV in un bucket Amazon S3.Per informazioni sull'utilizzo di AWS DMS per questa attività, consulta [Utilizzo di un database Oracle come origine](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) e [Utilizzo di un database PostgreSQL come destinazione](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) nella documentazione di AWS DMS.Per informazioni sull'utilizzo di Amazon S3 per questa attività, consulta [Using Amazon S3 come target nella documentazione di](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html) AWS DMS. | Ingegnere addetto alla migrazione, DBA | 
| Convalida la tabella PostgreSQL di destinazione. | Convalida i dati di destinazione, incluse le intestazioni, rispetto ai dati di origine utilizzando le seguenti query nel database di destinazione.<pre>SELECT * FROM clobdata_pg;<br />SELECT * FROM clobdatatarget;</pre>Confronta i risultati con i risultati delle query del database di origine (dal primo passaggio). | Developer | 
| Dividi i dati CLOB in righe separate. | Esegui il codice PostgreSQL personalizzato fornito nella sezione Informazioni [aggiuntive per dividere i](#migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-additional) dati CLOB e inserirli in righe separate nella tabella PostgreSQL di destinazione. | Developer | 

### Convalida i dati.
<a name="validate-the-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida i dati nella tabella di destinazione. | Convalida i dati inseriti nella tabella di destinazione utilizzando le seguenti query.<pre>SELECT * FROM clobdata_pg;<br />SELECT * FROM clobdatatarget;</pre> | Developer | 

## Risorse correlate
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-resources"></a>
+ [Tipo di dati CLOB](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF0021) (documentazione Oracle)
+ [Tipi di dati](https://www.postgresql.org/docs/11/datatype.html) (documentazione PostgreSQL)

## Informazioni aggiuntive
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-additional"></a>

**Funzione PostgreSQL per la suddivisione dei dati 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' ;
```

**Esempi di input e output**

Puoi usare i seguenti esempi per provare il codice PostgreSQL prima di migrare i tuoi dati.

Crea un database Oracle con tre righe di input.

```
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;
```

Viene visualizzato il seguente output.


|  |  | 
| --- |--- |
| id | dati grezzi | 
| 1 | linea di test 1 linea di test 2 linea di test 3 | 

Carica i dati di origine in una tabella intermedia PostgreSQL () per l'elaborazione. `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;
```

Questo mostra il seguente output.


|  |  | 
| --- |--- |
| id1 | data | 
| 1 | linea di test 1 | 
| 2 | linea di test 2 | 
| 3 | linea di test 3 | 