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.

Alat
Layanan AWS
Amazon Aurora PostgreSQL Compatible Edition adalah mesin database relasional yang dikelola sepenuhnya dan sesuai dengan ACID yang membantu Anda mengatur, mengoperasikan, dan menskalakan penerapan PostgreSQL.
Amazon Relational Database Service (Amazon RDS) untuk PostgreSQL membantu Anda mengatur, mengoperasikan, dan menskalakan database relasional PostgreSQL di AWS Cloud.
AWS Database Migration Service (AWS DMS) membantu Anda memigrasikan penyimpanan data ke AWS Cloud atau antara kombinasi pengaturan cloud dan lokal.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
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. DBeaver
adalah 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
Untuk praktik terbaik untuk mengonfigurasi tugas AWS DMS untuk memigrasikan objek biner besar, lihat Memigrasi objek biner besar () LOBs dalam dokumentasi AWS DMS.
Epik
| Tugas | Deskripsi | Keterampilan 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.
| 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.
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 |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Validasi data dalam tabel target. | Validasi data yang dimasukkan ke dalam tabel target dengan menggunakan kueri berikut.
| Developer |
Sumber daya terkait
Jenis data CLOB
(dokumentasi Oracle) Tipe data
(dokumentasi PostgreSQL)
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 |