Langsung ke konten
Beranda IntoSQL

Konversi Oracle ke PostgreSQL

Letakkan file .sql yang ditulis Database Export di SQL Developer atau SQLcl, dengan tabel dan pernyataan Insert-nya, lalu unduh skrip PostgreSQL dengan tabel, kunci, indeks, dan data yang sama. Setiap nilai yang tidak bisa disimpan PostgreSQL apa adanya, dan setiap objek yang tidak didukungnya, dicantumkan di laporan.

File Anda
sqlshop_2024_oracle.sqlFile contoh, 9,3 kB
Database Anda

18 baris dikonversi, tanpa perbaikan, tidak ada yang ditolak

Tampilkan

Tabel di shop_2024_oracle.sqlDump Oracle · ditulis oleh SQL Developer · utf-8

  • customers8 baris
    7 kolom
    idbigint not null
    namevarchar(100) not null
    emailvarchar(150) not null
    countryvarchar(2) not null
    is_activesmallint not null
    signed_uptimestamp(0)
    created_attimestamp(0) not null
  • orders10 baris
    9 kolom
    idbigint not null
    customer_idbigint not null
    invoicebigint
    statusvarchar(10) not null
    totalnumeric(10,2) not null
    itemsinteger not null
    ordered_attimestamp(0) not null
    shipped_attimestamp(0)
    notevarchar(255)
-- Written by IntoSQL from a Oracle dump. Load it with: psql -v ON_ERROR_STOP=1 -f <file>
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET synchronous_commit = off;
SET maintenance_work_mem = '512MB';

CREATE SEQUENCE invoice_numbers INCREMENT BY 1 MINVALUE 1 START WITH 1020;
CREATE TABLE customers (
    id bigint GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    name varchar(100) NOT NULL,
    email varchar(150) NOT NULL,
    country varchar(2) DEFAULT 'US' NOT NULL,
    is_active smallint DEFAULT 1 NOT NULL,
    signed_up timestamp(0),
    created_at timestamp(0) DEFAULT LOCALTIMESTAMP NOT NULL,
    CONSTRAINT customers_check1 CHECK (is_active IN (0, 1))
);

CREATE TABLE orders (
    id bigint GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    customer_id bigint NOT NULL,
    invoice bigint DEFAULT (nextval('invoice_numbers')),
    status varchar(10) DEFAULT 'pending' NOT NULL,
    total numeric(10,2) NOT NULL,
    items integer DEFAULT 1 NOT NULL,
    ordered_at timestamp(0) NOT NULL,
    shipped_at timestamp(0),
    note varchar(255),
    CONSTRAINT orders_check1 CHECK (status IN ('pending', 'paid', 'shipped', 'cancelled'))
);

COPY customers (id, name, email, country, is_active, signed_up, created_at) FROM stdin;
1	Ana Martínez	ana@example.com	MX	1	2023-01-15 00:00:00	2023-01-15 10:24:00.000000
2	Zoë Müller	zoe@example.de	DE	1	2023-02-03 00:00:00	2023-02-03 08:11:42.000000
3	José Peña	jose@example.es	ES	0	2023-03-21 00:00:00	2023-03-21 19:05:17.000000
4	李雷	lilei@example.cn	CN	1	2023-05-09 00:00:00	2023-05-09 02:40:00.000000
5	Noah O'Brien	noah@example.ie	IE	1	\N	2023-06-30 14:00:00.000000
6	Amélie Laurent	amelie@example.fr	FR	1	2024-01-02 00:00:00	2024-01-02 09:30:00.000000
7	Ravi Patel	ravi@example.in	IN	0	2024-02-29 00:00:00	2024-02-29 23:59:59.000000
8	Sofia Rossi 🌻	sofia@example.it	IT	1	2024-04-12 00:00:00	2024-04-12 12:12:12.000000
\.

COPY orders (id, customer_id, invoice, status, total, items, ordered_at, shipped_at, note) FROM stdin;
1	1	1000	shipped	129.9	3	2024-03-01 10:00:00	2024-03-02 16:30:00	\N
2	2	1001	paid	54	1	2024-03-02 11:15:00	\N	Gift wrap 🎁
3	1	1002	cancelled	12.5	1	2024-03-03 09:45:00	\N	Customer changed their mind
4	4	1003	shipped	980	12	2024-03-05 02:10:00	2024-03-07 08:00:00	请小心轻放
5	5	1004	pending	45.75	2	2024-03-08 17:20:00	\N	Leave at the door; ring twice
6	6	1005	shipped	310.4	5	2024-03-10 13:00:00	2024-03-11 09:00:00	Fragile: "glass"
7	8	1006	paid	76.2	2	2024-03-11 18:45:00	\N	\N
8	2	1007	paid	19.99	1	2024-03-12 08:00:00	\N	Paid at the counter
9	3	1008	shipped	64	2	2024-03-14 15:30:00	\N	Shipping date never recorded
10	7	1009	paid	1499	1	2024-03-15 21:05:00	\N	C:\\Users\\ravi\\invoice.pdf
\.


-- Keys, indexes and constraints, after the rows so each builds once.
CREATE UNIQUE INDEX customers_customers_pk ON customers (id);
CREATE UNIQUE INDEX customers_customers_email_uk ON customers (email);
CREATE UNIQUE INDEX orders_orders_pk ON orders (id);
CREATE INDEX orders_orders_status_date_ix ON orders (status, ordered_at);
ALTER TABLE customers ADD CONSTRAINT customers_customers_pk PRIMARY KEY USING INDEX customers_customers_pk;
ALTER TABLE customers ADD CONSTRAINT customers_customers_email_uk UNIQUE USING INDEX customers_customers_email_uk;
ALTER TABLE orders ADD CONSTRAINT orders_orders_pk PRIMARY KEY USING INDEX orders_orders_pk;
ALTER TABLE orders ADD CONSTRAINT orders_customer_fk FOREIGN KEY (customer_id) REFERENCES customers (id) NOT VALID;
DO $f$ BEGIN
    ALTER TABLE orders VALIDATE CONSTRAINT orders_customer_fk;
EXCEPTION WHEN foreign_key_violation THEN
    RAISE WARNING 'foreign key % has rows without a parent: it stays NOT VALID, and new rows are checked', 'orders_customer_fk';
END $f$;
SELECT setval(pg_get_serial_sequence('customers', 'id'), LEAST(GREATEST(COALESCE((SELECT max(id) FROM customers)::numeric, 0) + 1, 1), 9223372036854775807)::bigint, false);
COMMENT ON TABLE customers IS 'People who bought at least once';
SELECT setval(pg_get_serial_sequence('orders', 'id'), LEAST(GREATEST(COALESCE((SELECT max(id) FROM orders)::numeric, 0) + 1, 1), 9223372036854775807)::bigint, false);

Perbaikan

Tidak ada yang perlu diperbaiki.

File Anda dikonversi di komputer ini dan tidak pernah diunggah.

Contoh lain:

Yang berubah dari Oracle ke PostgreSQL

Setiap baris adalah aturan yang diterapkan konverter, beserta baris laporan yang ditulisnya saat aturan itu mengubah sesuatu di data Anda.

  • BOOLEAN (23ai)

    boolean

    TRUE dan FALSE tetap true dan false.

  • VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG

    varchar(n) dan text

    Panjang dihitung dalam karakter, baik Oracle menghitung byte maupun karakter, jadi setiap nilai muat.

  • NUMBER, NUMBER(p,s), FLOAT(b)

    numeric(p,s), atau bigint

    NUMBER mempertahankan setiap digit; NUMBER tanpa presisi yang semua nilainya bilangan bulat hingga 18 digit menjadi integer 64-bit, dan skala negatif memuat digit sebanyak itu sebelum titik desimal.

  • DATE, TIMESTAMP(p)

    timestamp(p)

    DATE di Oracle memuat waktu hingga detik, jadi merupakan tanggal dan waktu. Ekspor dalam sesi Amerika atau Jerman menulis tanggal tanpa jam atau abadnya (DD-MON-RR); ekspor dalam sesi ISO (SYYYY-MM-DD HH24:MI:SS) agar keduanya tetap ada.

  • TIMESTAMP(7) to TIMESTAMP(9)

    enam digit detik, digit ketujuh dipotong

    PostgreSQL menyimpan mikrodetik; digit ketujuh (100 nanodetik) dipotong, tidak pernah dibulatkan, jadi tidak ada nilai yang bergeser ke detik atau hari berikutnya.

    Baris laporan: fraction_cut

  • TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE

    timestamptz, momen yang sama

    timestamptz menyimpan momennya; PostgreSQL menampilkannya dalam zona waktu sesi, bukan offset yang dimiliki setiap nilai.

  • JSON (21c), and CLOB holding JSON

    jsonb

    Nilai JSON yang sama; NULL SQL yang ditulis ekspor sebagai 'null' tetap NULL.

  • BLOB, RAW(n), LONG RAW

    bytea

    Byte tetap byte.

  • ROWID, UROWID, XMLTYPE, SDO_GEOMETRY

    text, dan xml untuk XMLTYPE

    Tipe khusus Oracle tidak punya padanan; nilainya mempertahankan teksnya, termasuk nilai ROWID, meski tidak bermakna di luar Oracle.

    Baris laporan: type_replaced

  • collations that ignore case (BINARY_CI)

    perbandingan persis

    PostgreSQL membandingkan teks secara persis, jadi kolom yang mengabaikan huruf besar dan kecil di Oracle kini membedakan Ana dan ana.

    Baris laporan: case_insensitive_collation

  • identity columns, and a sequence a BEFORE INSERT trigger assigns

    GENERATED BY DEFAULT AS IDENTITY, berlanjut setelah id tertinggi

    Id yang disalin dimuat apa adanya, dan penghitung berlanjut setelah id tertinggi. Kolom yang diisi trigger dari sequence (cara sebelum 12c) juga menjadi identity.

  • CREATE SEQUENCE

    CREATE SEQUENCE dengan opsi yang sama

    Ekspor menulis posisi yang sudah dicapai sequence sebagai START WITH-nya, jadi sequence berlanjut dari sana.

  • virtual columns (GENERATED ALWAYS AS ... VIRTUAL)

    kolom generated, STORED

    PostgreSQL 13 sampai 17 hanya menyimpan kolom generated; rumusnya sama, dengan || ditulis agar NULL dihitung sebagai kosong seperti di Oracle.

    Baris laporan: virtual_as_stored

  • virtual columns with functions IntoSQL doesn't write, and the || operator

    kolom biasa

    Rumus yang tidak bisa ditulis untuk PostgreSQL menyisakan kolom biasa dan satu baris laporan; nilai yang ditulis ekspor untuk kolom virtual tidak disertakan, dan PostgreSQL tidak punya apa pun untuk dihitung.

    Baris laporan: generated_not_translated

  • defaults with functions IntoSQL doesn't write (SYS_GUID(), ||)

    tanpa default

    Default yang tidak bisa ditulis untuk PostgreSQL dihilangkan dan dilaporkan.

    Baris laporan: default_not_translated

  • CHECK constraints

    diterjemahkan

    CHECK yang sama, diuji saat setiap baris dimuat.

  • CHECK constraints with functions IntoSQL doesn't write

    tidak dibuat

    CHECK yang tidak bisa ditulis untuk PostgreSQL dihilangkan dan dilaporkan.

    Baris laporan: check_skipped

  • CHECK constraints that are DISABLE or ENABLE NOVALIDATE

    tidak dibuat

    Oracle tidak menerapkan CHECK ini pada baris yang sudah ada, jadi baris bisa melanggarnya.

    Baris laporan: check_not_enforced

  • function-based, bitmap and domain indexes

    tidak dibuat

    IntoSQL menulis indeks b-tree pada kolom; buat ulang indeks lainnya setelah pemuatan.

    Baris laporan: index_skipped

  • foreign keys

    foreign key, setelah baris

    Baris dimuat dalam urutan apa pun, dan key memeriksanya sesudahnya.

  • foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones

    tidak dibuat

    Key tidak bisa merujuk ke tabel yang tidak ada, dan key yang tidak diperiksa Oracle bisa punya baris tanpa induk.

    Baris laporan: foreign_key_skipped

  • partitioned tables

    satu tabel dengan baris dari setiap partisi

    Barisnya sama; partisi ulang tabel di PostgreSQL jika diperlukan.

    Baris laporan: partitions_dropped

  • NOT NULL columns with values that become NULL

    NOT NULL dihapus

    Kolom yang nilainya harus menjadi NULL tidak bisa mempertahankan NOT NULL, atau pemuatan akan berhenti.

    Baris laporan: not_null_relaxed

  • views, synonyms, types, packages, procedures, functions and other triggers

    dicantumkan di laporan

    Kodenya ditulis dalam PL/SQL, jadi dicantumkan agar Anda bisa membuatnya ulang.

    Baris laporan: not_converted_objects

  • exports without CREATE TABLE (data only)

    tipe dibaca dari nilai

    Ekspor yang hanya berisi data hanya punya baris, jadi tipenya diambil dari nilai.

    Baris laporan: no_schema

  • expressions in INSERT values other than the ones exports write

    NULL

    Konverter yang tidak menjalankan database tidak bisa mengevaluasinya; to_date, to_timestamp, TO_CLOB, HEXTORAW, dan fungsi lain yang ditulis ekspor tetap dibaca.

    Baris laporan: expression_value

  • types IntoSQL doesn't know, and object types

    text

    Text memuat nilai apa pun; ubah tipenya setelah pemuatan.

    Baris laporan: unknown_type

  • dates before year 1 and time zones given as region names

    NULL

    Nilai yang bukan tanggal menjadi NULL dan laporan menghitungnya.

    Baris laporan: date_out_of_range

  • NaN and Infinity in BINARY_FLOAT and BINARY_DOUBLE

    NaN dan Infinity dipertahankan

    Tipe floating-point PostgreSQL memuat NaN dan infinity.

  • NUL characters in text

    dihapus

    Teks PostgreSQL tidak bisa memuat karakter NUL. Karakter itu dihapus dan laporan menghitung nilainya.

    Baris laporan: nul_removed

  • text that isn't valid in its encoding

    byte yang rusak menjadi karakter pengganti

    Teks PostgreSQL harus berupa UTF-8 yang valid.

    Baris laporan: invalid_utf8_replaced

  • text decoded twice (ñ)

    disalin apa adanya

    Skrip berisi persis karakter ini, jadi karakter itu disalin; laporan menunjukkannya.

    Baris laporan: mojibake_suspected

Di OracleDi PostgreSQLBaris laporan
BOOLEAN (23ai)booleanTRUE dan FALSE tetap true dan false.
VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONGvarchar(n) dan textPanjang dihitung dalam karakter, baik Oracle menghitung byte maupun karakter, jadi setiap nilai muat.
NUMBER, NUMBER(p,s), FLOAT(b)numeric(p,s), atau bigintNUMBER mempertahankan setiap digit; NUMBER tanpa presisi yang semua nilainya bilangan bulat hingga 18 digit menjadi integer 64-bit, dan skala negatif memuat digit sebanyak itu sebelum titik desimal.
DATE, TIMESTAMP(p)timestamp(p)DATE di Oracle memuat waktu hingga detik, jadi merupakan tanggal dan waktu. Ekspor dalam sesi Amerika atau Jerman menulis tanggal tanpa jam atau abadnya (DD-MON-RR); ekspor dalam sesi ISO (SYYYY-MM-DD HH24:MI:SS) agar keduanya tetap ada.
TIMESTAMP(7) to TIMESTAMP(9)enam digit detik, digit ketujuh dipotongPostgreSQL menyimpan mikrodetik; digit ketujuh (100 nanodetik) dipotong, tidak pernah dibulatkan, jadi tidak ada nilai yang bergeser ke detik atau hari berikutnya.fraction_cut
TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONEtimestamptz, momen yang samatimestamptz menyimpan momennya; PostgreSQL menampilkannya dalam zona waktu sesi, bukan offset yang dimiliki setiap nilai.
JSON (21c), and CLOB holding JSONjsonbNilai JSON yang sama; NULL SQL yang ditulis ekspor sebagai 'null' tetap NULL.
BLOB, RAW(n), LONG RAWbyteaByte tetap byte.
ROWID, UROWID, XMLTYPE, SDO_GEOMETRYtext, dan xml untuk XMLTYPETipe khusus Oracle tidak punya padanan; nilainya mempertahankan teksnya, termasuk nilai ROWID, meski tidak bermakna di luar Oracle.type_replaced
collations that ignore case (BINARY_CI)perbandingan persisPostgreSQL membandingkan teks secara persis, jadi kolom yang mengabaikan huruf besar dan kecil di Oracle kini membedakan Ana dan ana.case_insensitive_collation
identity columns, and a sequence a BEFORE INSERT trigger assignsGENERATED BY DEFAULT AS IDENTITY, berlanjut setelah id tertinggiId yang disalin dimuat apa adanya, dan penghitung berlanjut setelah id tertinggi. Kolom yang diisi trigger dari sequence (cara sebelum 12c) juga menjadi identity.
CREATE SEQUENCECREATE SEQUENCE dengan opsi yang samaEkspor menulis posisi yang sudah dicapai sequence sebagai START WITH-nya, jadi sequence berlanjut dari sana.
virtual columns (GENERATED ALWAYS AS ... VIRTUAL)kolom generated, STOREDPostgreSQL 13 sampai 17 hanya menyimpan kolom generated; rumusnya sama, dengan || ditulis agar NULL dihitung sebagai kosong seperti di Oracle.virtual_as_stored
virtual columns with functions IntoSQL doesn't write, and the || operatorkolom biasaRumus yang tidak bisa ditulis untuk PostgreSQL menyisakan kolom biasa dan satu baris laporan; nilai yang ditulis ekspor untuk kolom virtual tidak disertakan, dan PostgreSQL tidak punya apa pun untuk dihitung.generated_not_translated
defaults with functions IntoSQL doesn't write (SYS_GUID(), ||)tanpa defaultDefault yang tidak bisa ditulis untuk PostgreSQL dihilangkan dan dilaporkan.default_not_translated
CHECK constraintsditerjemahkanCHECK yang sama, diuji saat setiap baris dimuat.
CHECK constraints with functions IntoSQL doesn't writetidak dibuatCHECK yang tidak bisa ditulis untuk PostgreSQL dihilangkan dan dilaporkan.check_skipped
CHECK constraints that are DISABLE or ENABLE NOVALIDATEtidak dibuatOracle tidak menerapkan CHECK ini pada baris yang sudah ada, jadi baris bisa melanggarnya.check_not_enforced
function-based, bitmap and domain indexestidak dibuatIntoSQL menulis indeks b-tree pada kolom; buat ulang indeks lainnya setelah pemuatan.index_skipped
foreign keysforeign key, setelah barisBaris dimuat dalam urutan apa pun, dan key memeriksanya sesudahnya.
foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE onestidak dibuatKey tidak bisa merujuk ke tabel yang tidak ada, dan key yang tidak diperiksa Oracle bisa punya baris tanpa induk.foreign_key_skipped
partitioned tablessatu tabel dengan baris dari setiap partisiBarisnya sama; partisi ulang tabel di PostgreSQL jika diperlukan.partitions_dropped
NOT NULL columns with values that become NULLNOT NULL dihapusKolom yang nilainya harus menjadi NULL tidak bisa mempertahankan NOT NULL, atau pemuatan akan berhenti.not_null_relaxed
views, synonyms, types, packages, procedures, functions and other triggersdicantumkan di laporanKodenya ditulis dalam PL/SQL, jadi dicantumkan agar Anda bisa membuatnya ulang.not_converted_objects
exports without CREATE TABLE (data only)tipe dibaca dari nilaiEkspor yang hanya berisi data hanya punya baris, jadi tipenya diambil dari nilai.no_schema
expressions in INSERT values other than the ones exports writeNULLKonverter yang tidak menjalankan database tidak bisa mengevaluasinya; to_date, to_timestamp, TO_CLOB, HEXTORAW, dan fungsi lain yang ditulis ekspor tetap dibaca.expression_value
types IntoSQL doesn't know, and object typestextText memuat nilai apa pun; ubah tipenya setelah pemuatan.unknown_type
dates before year 1 and time zones given as region namesNULLNilai yang bukan tanggal menjadi NULL dan laporan menghitungnya.date_out_of_range
NaN and Infinity in BINARY_FLOAT and BINARY_DOUBLENaN dan Infinity dipertahankanTipe floating-point PostgreSQL memuat NaN dan infinity.
NUL characters in textdihapusTeks PostgreSQL tidak bisa memuat karakter NUL. Karakter itu dihapus dan laporan menghitung nilainya.nul_removed
text that isn't valid in its encodingbyte yang rusak menjadi karakter penggantiTeks PostgreSQL harus berupa UTF-8 yang valid.invalid_utf8_replaced
text decoded twice (ñ)disalin apa adanyaSkrip berisi persis karakter ini, jadi karakter itu disalin; laporan menunjukkannya.mojibake_suspected

Muat skrip ke PostgreSQL

Skrip membuat tabel, menyalin baris, lalu menambahkan kunci, indeks, dan foreign key, jadi pemuatan berjalan cepat dan berhenti di galat pertama.

psql -v ON_ERROR_STOP=1 -d mydb -f oracle.postgresql.sql

Foreign key ditambahkan sebagai NOT VALID lalu divalidasi. Jika sebuah baris merujuk ke baris yang tidak ada, skrip memberi tahu constraint mana, bukan gagal di tengah jalan.

Untuk dump yang besar, buat database terlebih dahulu dan jalankan skrip dengan psql dari mesin yang sama dengan server.

IntoSQL Pro memuat file langsung ke PostgreSQL dari aplikasi desktop atau command line, tanpa menulis skrip.

Buat dump Oracle untuk hasil terbaik

Konverter membaca apa yang ada di dump. Opsi berikut membuat lebih banyak data Anda tetap ada di dalamnya:

  • Di SQL Developer, pilih Tools, Database Export, dengan DDL dan format data Insert. SQLcl menulis hal yang sama dengan SET SQLFORMAT INSERT.
  • Jalankan ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' sebelum mengekspor: format default menulis tanggal tanpa jam atau abadnya.
  • File .dmp dari exp atau expdp bersifat biner: impor ke database Oracle, misalnya Oracle Database Free di Docker, lalu ekspor dengan SQL Developer.

Yang tidak dikonversi

View, paket, prosedur, fungsi, trigger, tipe, dan sinonim ditulis dalam PL/SQL. Semuanya dicantumkan di laporan berdasarkan nama, tidak pernah dibuang diam-diam, sehingga Anda bisa menulis ulang untuk PostgreSQL.

Pertanyaan tentang Oracle ke PostgreSQL

Tidak terjawab di sini? Tulis ke kami dari halaman kontak, dan seseorang akan membalas. Halaman kontak

Apakah dump saya diunggah?

Tidak. Konverter berjalan di browser Anda dan membaca dump dari disk Anda sepotong demi sepotong, jadi dump tidak pernah meninggalkan komputer Anda. Aplikasi desktop dan command line juga mengonversi di komputer Anda.

Seberapa besar dump yang bisa dipakai?

Konverter tidak pernah menyimpan seluruh dump di memori: file dibaca dua kali, per rentang, dan skrip ditulis sambil berjalan. Dump berukuran beberapa gigabyte bisa dikonversi di browser, di aplikasi desktop, dan dengan command line.

Bisakah saya mengonversi file .dmp dari exp atau expdp?

Tidak secara langsung: Data Pump dan Export versi asli menulis format biner yang hanya bisa dibaca Oracle. Impor ke database Oracle mana pun, Oracle Database Free berjalan di Docker, lalu ekspor dengan Database Export di SQL Developer atau SQLcl. Konverter memberi tahu hal ini saat menerima file .dmp.

Ekspor dari versi Oracle mana yang bisa dipakai?

Ekspor dari SQL Developer dan SQLcl, dengan definisi tabel dari DBMS_METADATA, dari Oracle 11g ke atas. Setiap ekspor uji berasal dari Oracle 21c dan 23ai, dalam sesi Amerika, Jerman, dan ISO, dan dibandingkan dengan sumbernya sel demi sel.

Apa yang terjadi pada NUMBER, DATE, dan tipe Oracle lainnya?

NUMBER menjadi numeric, atau bigint jika setiap nilai adalah bilangan bulat; DATE menjadi timestamp, dengan waktunya tetap ada; CLOB menjadi text, BLOB dan RAW menjadi bytea, BINARY_DOUBLE menjadi double precision dengan NaN dan Infinity, dan interval menjadi interval.

Apakah kolom identity dan sequence dipertahankan?

Ya. Kolom identity tetap kolom identity dan berlanjut setelah id tertinggi, begitu pula kolom yang diisi trigger dari sequence. Sequence berlanjut dari posisi yang disebutkan ekspor.

Bagaimana dengan paket PL/SQL, prosedur, dan trigger?

Semuanya dicantumkan di laporan berdasarkan nama dan tidak dikonversi, karena setiap database menulisnya dalam bahasanya sendiri.

Di versi PostgreSQL mana skrip bisa dimuat?

PostgreSQL 13 sampai 18. Skrip yang sama dimuat di setiap versi itu, dan berhenti di galat pertama jika ada yang salah.