Migrasikan nilai Oracle CLOB ke baris individual di PostgreSQL di AWS - AWS Prescriptive Guidance

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

Migrasikan nilai Oracle CLOB ke baris individual di PostgreSQL di AWS

Sai Krishna Namburu dan Sindhusha Paturu, Amazon Web Services

Ringkasan

Pola ini menjelaskan cara membagi nilai objek besar karakter Oracle (CLOB) menjadi baris individual di Amazon Aurora PostgreSQL Compatible Edition dan Amazon Relational Database Service (Amazon RDS) untuk PostgreSQL. PostgreSQL tidak mendukung tipe data CLOB.

Tabel dengan partisi interval diidentifikasi dalam database Oracle sumber, dan nama tabel, jenis partisi, interval partisi, dan metadata lainnya ditangkap dan dimuat ke dalam database target. Anda dapat memuat data CLOB yang berukuran kurang dari 1 GB ke dalam tabel target sebagai teks menggunakan AWS Database Migration Service (AWS DMS), atau Anda dapat mengekspor data dalam format CSV, memuatnya ke bucket Amazon Simple Storage Service (Amazon S3), dan memigrasikannya ke database PostgreSQL target Anda.

Setelah migrasi, Anda dapat menggunakan kode PostgreSQL kustom yang disediakan dengan pola ini untuk membagi data CLOB menjadi baris individual berdasarkan pengidentifikasi CHR(10) karakter baris baru () dan mengisi tabel target. 

Prasyarat dan batasan

Prasyarat

  • Sebuah tabel database Oracle yang memiliki partisi interval dan catatan dengan tipe data CLOB.

  • Aurora PostgreSQL kompatibel atau Amazon RDS untuk database PostgreSQL yang memiliki struktur tabel yang mirip dengan tabel sumber (kolom dan tipe data yang sama).

Batasan

  • Nilai CLOB tidak boleh melebihi 1 GB.

  • Setiap baris dalam tabel target harus memiliki pengidentifikasi karakter baris baru.

Versi produk

  • Oracle 12c

  • Aurora Postgres 11.6

Arsitektur

Diagram berikut menunjukkan tabel Oracle sumber dengan data CLOB, dan tabel PostgreSQL setara di Aurora PostgreSQL versi kompatibel 11.6.

Sumber tabel CLOB dan tabel PostgreSQL target yang setara.

Alat

Layanan AWS

Alat lainnya

Anda dapat menggunakan alat klien berikut untuk menghubungkan, mengakses, dan mengelola Aurora PostgreSQL yang kompatibel dan Amazon RDS for PostgreSQL database. (Alat ini tidak digunakan dalam pola ini.)

  • pgAdmin adalah alat manajemen sumber terbuka untuk PostgreSQL. Ini menyediakan antarmuka grafis yang membantu Anda membuat, memelihara, dan menggunakan objek database.

  • DBeaveradalah alat database open-source untuk pengembang dan administrator database. Anda dapat menggunakan alat ini untuk memanipulasi, memantau, menganalisis, mengelola, dan memigrasi data Anda.

Praktik terbaik

Untuk praktik terbaik untuk memigrasikan database Anda dari Oracle ke PostgreSQL, lihat PostgreSQL PostgreSQL AWS Praktik terbaik untuk memigrasikan database Oracle ke Amazon RDS PostgreSQL atau Amazon Aurora PostgreSQL: Proses migrasi dan pertimbangan infrastruktur.

Untuk praktik terbaik untuk mengonfigurasi tugas AWS DMS untuk memigrasikan objek biner besar, lihat Memigrasi objek biner besar () LOBs dalam dokumentasi AWS DMS.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Analisis data CLOB.

Dalam database Oracle sumber, analisis data CLOB untuk melihat apakah itu berisi header kolom, sehingga Anda dapat menentukan metode untuk memuat data ke dalam tabel target. 

Untuk menganalisis data input, gunakan kueri berikut.

SELECT * FROM clobdata_or;  

Developer

Muat data CLOB ke database target.

Migrasikan tabel yang memiliki data CLOB ke tabel interim (staging) di database target Aurora atau Amazon RDS. Anda dapat menggunakan AWS DMS atau mengunggah data sebagai file CSV ke bucket Amazon S3.

Untuk informasi tentang penggunaan AWS DMS untuk tugas ini, lihat Menggunakan database Oracle sebagai sumber dan Menggunakan database PostgreSQL sebagai target dalam dokumentasi AWS DMS.

Untuk informasi tentang penggunaan Amazon S3 untuk tugas ini, lihat Menggunakan Amazon S3 sebagai target dalam dokumentasi AWS DMS.

Insinyur migrasi, DBA

Validasi tabel PostgreSQL target.

Validasi data target, termasuk header, terhadap data sumber dengan menggunakan kueri berikut dalam database target.

SELECT * FROM clobdata_pg; SELECT * FROM clobdatatarget;

Bandingkan hasil dengan hasil kueri dari database sumber (dari langkah pertama).

Developer

Pisahkan data CLOB menjadi baris terpisah.

Jalankan kode PostgreSQL kustom yang disediakan di bagian Informasi tambahan untuk membagi data CLOB dan memasukkannya ke dalam baris terpisah dalam tabel PostgreSQL target.

Developer
TugasDeskripsiKeterampilan yang dibutuhkan

Validasi data dalam tabel target.

Validasi data yang dimasukkan ke dalam tabel target dengan menggunakan kueri berikut.

SELECT * FROM clobdata_pg; SELECT * FROM clobdatatarget;
Developer

Sumber daya terkait

Informasi tambahan

Fungsi PostgreSQL untuk memisahkan data 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' ;

Contoh input dan output

Anda dapat menggunakan contoh berikut untuk mencoba kode PostgreSQL sebelum memigrasikan data.

Buat database Oracle dengan tiga baris 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;

Ini menampilkan output berikut.

id

data mentah

1

garis uji 1 garis uji 2 garis uji 3

Muat data sumber ke dalam tabel pementasan PostgreSQL () untuk diproses. 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;

Ini menampilkan output berikut.

id1

data

1

garis uji 1

2

garis uji 2

3

garis uji 3