Oracle - PostgreSQL dönüştürme
SQL Developer'ın Database Export aracının veya SQLcl'in tabloları ve Insert ifadeleriyle yazdığı .sql dosyasını bırakın ve aynı tablolar, anahtarlar, indeksler ve verilerle bir PostgreSQL betiği indirin. PostgreSQL'in olduğu gibi tutamadığı her değer ve taşımadığı her nesne raporda listelenir.
18 satır dönüştürüldü, düzeltme yok, reddedilen yok
shop_2024_oracle.sql içindeki tablolarOracle dökümü · SQL Developer ile yazıldı · utf-8
customers8 satır
7 sütun id bigint not null name varchar(100) not null email varchar(150) not null country varchar(2) not null is_active smallint not null signed_up timestamp(0) created_at timestamp(0) not null orders10 satır
9 sütun id bigint not null customer_id bigint not null invoice bigint status varchar(10) not null total numeric(10,2) not null items integer not null ordered_at timestamp(0) not null shipped_at timestamp(0) note varchar(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);
Düzeltmeler
Düzeltilecek bir şey yoktu.
Dosyan bu bilgisayarda dönüştürülür ve asla yüklenmez.
Diğer örnekler:
Oracle ile PostgreSQL arasında neler değişir
Her satır, dönüştürücünün uyguladığı bir kuraldır; yanında, kural verilerinizde bir şeyi değiştirdiğinde yazılan rapor satırı yer alır.
BOOLEAN (23ai)
boolean
TRUE ve FALSE, true ve false olarak kalır.
VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG
varchar(n) ve text
Oracle ister bayt ister karakter saymış olsun, uzunluklar karakter sayar; böylece her değer sığar.
NUMBER, NUMBER(p,s), FLOAT(b)
numeric(p,s) veya bigint
NUMBER her basamağı korur; duyarlığı olmayan ve tüm değerleri en fazla 18 basamaklı tam sayı olan bir NUMBER 64 bitlik tam sayı olur ve negatif bir ölçek ondalık noktadan önce o kadar basamak tutar.
DATE, TIMESTAMP(p)
timestamp(p)
Oracle'ın DATE türü saniyesine kadar bir saat tutar, yani bir tarih ve saattir. Amerikan veya Alman oturumundaki bir dışa aktarım tarihleri saatleri ve yüzyılları olmadan (DD-MON-RR) yazar; bunları korumak için ISO oturumunda (SYYYY-MM-DD HH24:MI:SS) dışa aktarın.
TIMESTAMP(7) to TIMESTAMP(9)
saniyenin altı basamağı, yedincisi kesilir
PostgreSQL mikrosaniyeleri tutar; yedinci basamak (100 nanosaniye) yuvarlanmaz, kesilir, böylece hiçbir değer sonraki saniyeye veya güne kaymaz.
Rapor satırı: fraction_cut
TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE
timestamptz, aynı anlar
timestamptz anı korur; PostgreSQL onu her değerin sahip olduğu fark yerine oturumun saat diliminde gösterir.
JSON (21c), and CLOB holding JSON
jsonb
Aynı JSON değerleri; dışa aktarımın 'null' olarak yazdığı bir SQL NULL, NULL olarak kalır.
BLOB, RAW(n), LONG RAW
bytea
Baytlar bayt olarak kalır.
ROWID, UROWID, XMLTYPE, SDO_GEOMETRY
text, XMLTYPE için xml
Oracle'ın kendi türlerinin karşılığı yoktur; değerleri, ROWID değerleri dahil, metinlerini korur, ancak Oracle dışında bir anlam taşımazlar.
Rapor satırı: type_replaced
collations that ignore case (BINARY_CI)
tam karşılaştırma
PostgreSQL metni tam karşılaştırır, bu yüzden Oracle'da büyük/küçük harfi yok sayan sütunlar artık Ana ile ana'yı ayırt eder.
Rapor satırı: case_insensitive_collation
identity columns, and a sequence a BEFORE INSERT trigger assigns
en yüksek id'den sonra devam eden GENERATED BY DEFAULT AS IDENTITY
Kopyalanan id'ler olduğu gibi yüklenir ve sayaç en yüksek id'den sonra devam eder. Bir tetikleyicinin bir sequence'tan doldurduğu sütun (12c öncesi yöntem) da kimlik sütunu olur.
CREATE SEQUENCE
aynı seçeneklerle CREATE SEQUENCE
Dışa aktarım, bir sequence'ın ulaştığı değeri START WITH olarak yazar; böylece oradan devam eder.
virtual columns (GENERATED ALWAYS AS ... VIRTUAL)
üretilen sütunlar, STORED
PostgreSQL 13 ile 17 üretilen sütunları yalnızca saklar; formül aynıdır ve ||, NULL'u Oracle'daki gibi boş sayacak şekilde yazılır.
Rapor satırı: virtual_as_stored
virtual columns with functions IntoSQL doesn't write, and the || operator
düz bir sütun
PostgreSQL için yazılamayan bir formül düz bir sütun ve bir rapor satırı bırakır; dışa aktarımın sanal sütunlar için yazdığı değerler dışarıda bırakılır ve PostgreSQL bunları hesaplayamaz.
Rapor satırı: generated_not_translated
defaults with functions IntoSQL doesn't write (SYS_GUID(), ||)
varsayılan değer yok
PostgreSQL için yazılamayan bir varsayılan değer dışarıda bırakılır ve raporlanır.
Rapor satırı: default_not_translated
CHECK constraints
çevrilir
Aynı CHECK kısıtları, her satır yüklenirken denetlenir.
CHECK constraints with functions IntoSQL doesn't write
oluşturulmaz
PostgreSQL için yazılamayan bir CHECK kısıtı dışarıda bırakılır ve raporlanır.
Rapor satırı: check_skipped
CHECK constraints that are DISABLE or ENABLE NOVALIDATE
oluşturulmaz
Oracle bu CHECK kısıtlarını zaten var olan satırlara uygulamaz, bu yüzden satırlar onları ihlal edebilir.
Rapor satırı: check_not_enforced
function-based, bitmap and domain indexes
oluşturulmaz
IntoSQL sütunlar üzerinde b-tree indeksleri yazar; diğerlerini yüklemeden sonra yeniden oluşturun.
Rapor satırı: index_skipped
foreign keys
satırlardan sonra yabancı anahtarlar
Satırlar herhangi bir sırada yüklenir ve anahtarlar onları sonradan denetler.
foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones
oluşturulmaz
Bir anahtar, var olmayan bir tabloya başvuramaz ve Oracle'ın denetlemediği bir anahtarın üst satırı olmayan satırları olabilir.
Rapor satırı: foreign_key_skipped
partitioned tables
her bölümün satırlarını içeren tek tablo
Satırlar aynıdır; gerekiyorsa tabloyu PostgreSQL'de yeniden bölümleyin.
Rapor satırı: partitions_dropped
NOT NULL columns with values that become NULL
NOT NULL kaldırılır
Değerleri NULL olmak zorunda kalan bir sütun NOT NULL kısıtını koruyamaz, yoksa yükleme durur.
Rapor satırı: not_null_relaxed
views, synonyms, types, packages, procedures, functions and other triggers
raporda listelenir
Kodları PL/SQL ile yazılmıştır, bu yüzden yeniden oluşturmanız için listelenirler.
Rapor satırı: not_converted_objects
exports without CREATE TABLE (data only)
değerlerden okunan türler
Yalnızca veri içeren bir dışa aktarımda yalnızca satırlar vardır, bu yüzden türler değerlerden gelir.
Rapor satırı: no_schema
expressions in INSERT values other than the ones exports write
NULL
Veritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz; dışa aktarımların yazdığı to_date, to_timestamp, TO_CLOB, HEXTORAW ve diğerleri okunur.
Rapor satırı: expression_value
types IntoSQL doesn't know, and object types
text
Metin her değeri tutar; yüklemeden sonra türü değiştirin.
Rapor satırı: unknown_type
dates before year 1 and time zones given as region names
NULL
Tarih olmayan bir değer NULL olur ve rapor onu sayar.
Rapor satırı: date_out_of_range
NaN and Infinity in BINARY_FLOAT and BINARY_DOUBLE
NaN ve Infinity korunur
PostgreSQL'in kayan noktalı türleri NaN ve sonsuzluğu tutar.
NUL characters in text
kaldırılır
PostgreSQL'in metni NUL karakteri tutamaz. Karakter kaldırılır ve rapor bu değerleri sayar.
Rapor satırı: nul_removed
text that isn't valid in its encoding
hatalı baytlar yerine koyma karakteri olarak
PostgreSQL metni geçerli UTF-8 olmalıdır.
Rapor satırı: invalid_utf8_replaced
text decoded twice (ñ)
olduğu gibi kopyalanır
Betik tam olarak bu karakterleri içerir, bu yüzden kopyalanırlar; rapor onları gösterir.
Rapor satırı: mojibake_suspected
| Oracle içinde | PostgreSQL içinde | Rapor satırı |
|---|---|---|
| BOOLEAN (23ai) | booleanTRUE ve FALSE, true ve false olarak kalır. | |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | varchar(n) ve textOracle ister bayt ister karakter saymış olsun, uzunluklar karakter sayar; böylece her değer sığar. | |
| NUMBER, NUMBER(p,s), FLOAT(b) | numeric(p,s) veya bigintNUMBER her basamağı korur; duyarlığı olmayan ve tüm değerleri en fazla 18 basamaklı tam sayı olan bir NUMBER 64 bitlik tam sayı olur ve negatif bir ölçek ondalık noktadan önce o kadar basamak tutar. | |
| DATE, TIMESTAMP(p) | timestamp(p)Oracle'ın DATE türü saniyesine kadar bir saat tutar, yani bir tarih ve saattir. Amerikan veya Alman oturumundaki bir dışa aktarım tarihleri saatleri ve yüzyılları olmadan (DD-MON-RR) yazar; bunları korumak için ISO oturumunda (SYYYY-MM-DD HH24:MI:SS) dışa aktarın. | |
| TIMESTAMP(7) to TIMESTAMP(9) | saniyenin altı basamağı, yedincisi kesilirPostgreSQL mikrosaniyeleri tutar; yedinci basamak (100 nanosaniye) yuvarlanmaz, kesilir, böylece hiçbir değer sonraki saniyeye veya güne kaymaz. | fraction_cut |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | timestamptz, aynı anlartimestamptz anı korur; PostgreSQL onu her değerin sahip olduğu fark yerine oturumun saat diliminde gösterir. | |
| JSON (21c), and CLOB holding JSON | jsonbAynı JSON değerleri; dışa aktarımın 'null' olarak yazdığı bir SQL NULL, NULL olarak kalır. | |
| BLOB, RAW(n), LONG RAW | byteaBaytlar bayt olarak kalır. | |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | text, XMLTYPE için xmlOracle'ın kendi türlerinin karşılığı yoktur; değerleri, ROWID değerleri dahil, metinlerini korur, ancak Oracle dışında bir anlam taşımazlar. | type_replaced |
| collations that ignore case (BINARY_CI) | tam karşılaştırmaPostgreSQL metni tam karşılaştırır, bu yüzden Oracle'da büyük/küçük harfi yok sayan sütunlar artık Ana ile ana'yı ayırt eder. | case_insensitive_collation |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | en yüksek id'den sonra devam eden GENERATED BY DEFAULT AS IDENTITYKopyalanan id'ler olduğu gibi yüklenir ve sayaç en yüksek id'den sonra devam eder. Bir tetikleyicinin bir sequence'tan doldurduğu sütun (12c öncesi yöntem) da kimlik sütunu olur. | |
| CREATE SEQUENCE | aynı seçeneklerle CREATE SEQUENCEDışa aktarım, bir sequence'ın ulaştığı değeri START WITH olarak yazar; böylece oradan devam eder. | |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | üretilen sütunlar, STOREDPostgreSQL 13 ile 17 üretilen sütunları yalnızca saklar; formül aynıdır ve ||, NULL'u Oracle'daki gibi boş sayacak şekilde yazılır. | virtual_as_stored |
| virtual columns with functions IntoSQL doesn't write, and the || operator | düz bir sütunPostgreSQL için yazılamayan bir formül düz bir sütun ve bir rapor satırı bırakır; dışa aktarımın sanal sütunlar için yazdığı değerler dışarıda bırakılır ve PostgreSQL bunları hesaplayamaz. | generated_not_translated |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | varsayılan değer yokPostgreSQL için yazılamayan bir varsayılan değer dışarıda bırakılır ve raporlanır. | default_not_translated |
| CHECK constraints | çevrilirAynı CHECK kısıtları, her satır yüklenirken denetlenir. | |
| CHECK constraints with functions IntoSQL doesn't write | oluşturulmazPostgreSQL için yazılamayan bir CHECK kısıtı dışarıda bırakılır ve raporlanır. | check_skipped |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | oluşturulmazOracle bu CHECK kısıtlarını zaten var olan satırlara uygulamaz, bu yüzden satırlar onları ihlal edebilir. | check_not_enforced |
| function-based, bitmap and domain indexes | oluşturulmazIntoSQL sütunlar üzerinde b-tree indeksleri yazar; diğerlerini yüklemeden sonra yeniden oluşturun. | index_skipped |
| foreign keys | satırlardan sonra yabancı anahtarlarSatırlar herhangi bir sırada yüklenir ve anahtarlar onları sonradan denetler. | |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | oluşturulmazBir anahtar, var olmayan bir tabloya başvuramaz ve Oracle'ın denetlemediği bir anahtarın üst satırı olmayan satırları olabilir. | foreign_key_skipped |
| partitioned tables | her bölümün satırlarını içeren tek tabloSatırlar aynıdır; gerekiyorsa tabloyu PostgreSQL'de yeniden bölümleyin. | partitions_dropped |
| NOT NULL columns with values that become NULL | NOT NULL kaldırılırDeğerleri NULL olmak zorunda kalan bir sütun NOT NULL kısıtını koruyamaz, yoksa yükleme durur. | not_null_relaxed |
| views, synonyms, types, packages, procedures, functions and other triggers | raporda listelenirKodları PL/SQL ile yazılmıştır, bu yüzden yeniden oluşturmanız için listelenirler. | not_converted_objects |
| exports without CREATE TABLE (data only) | değerlerden okunan türlerYalnızca veri içeren bir dışa aktarımda yalnızca satırlar vardır, bu yüzden türler değerlerden gelir. | no_schema |
| expressions in INSERT values other than the ones exports write | NULLVeritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz; dışa aktarımların yazdığı to_date, to_timestamp, TO_CLOB, HEXTORAW ve diğerleri okunur. | expression_value |
| types IntoSQL doesn't know, and object types | textMetin her değeri tutar; yüklemeden sonra türü değiştirin. | unknown_type |
| dates before year 1 and time zones given as region names | NULLTarih olmayan bir değer NULL olur ve rapor onu sayar. | date_out_of_range |
| NaN and Infinity in BINARY_FLOAT and BINARY_DOUBLE | NaN ve Infinity korunurPostgreSQL'in kayan noktalı türleri NaN ve sonsuzluğu tutar. | |
| NUL characters in text | kaldırılırPostgreSQL'in metni NUL karakteri tutamaz. Karakter kaldırılır ve rapor bu değerleri sayar. | nul_removed |
| text that isn't valid in its encoding | hatalı baytlar yerine koyma karakteri olarakPostgreSQL metni geçerli UTF-8 olmalıdır. | invalid_utf8_replaced |
| text decoded twice (ñ) | olduğu gibi kopyalanırBetik tam olarak bu karakterleri içerir, bu yüzden kopyalanırlar; rapor onları gösterir. | mojibake_suspected |
Betiği PostgreSQL veritabanına yükleyin
Betik tabloları oluşturur, satırları kopyalar, ardından anahtarları, indeksleri ve yabancı anahtarları ekler; böylece hızlı yüklenir ve ilk hatada durur.
psql -v ON_ERROR_STOP=1 -d mydb -f oracle.postgresql.sqlYabancı anahtarlar NOT VALID olarak eklenir ve ardından doğrulanır. Bir satır var olmayan bir satıra işaret ediyorsa betik, yarı yolda başarısız olmak yerine hangi kısıtın sorunlu olduğunu söyler.
Büyük bir döküm için önce veritabanını oluşturun ve betiği sunucuyla aynı makinede psql ile çalıştırın.
IntoSQL Pro, dosyayı masaüstü uygulamasından veya komut satırından doğrudan PostgreSQL veritabanına yükler; betik yazmanız gerekmez.
En iyi sonuç için Oracle dökümü nasıl alınır
Dönüştürücü, dökümün içerdiğini okur. Bu seçenekler verilerinizin daha fazlasını dökümde tutar:
- SQL Developer'da DDL ve Insert veri biçimiyle Tools, Database Export'u seçin. SQLcl aynısını SET SQLFORMAT INSERT ile yazar.
- Dışa aktarmadan önce ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' çalıştırın: varsayılan biçim tarihleri saatleri ve yüzyılları olmadan yazar.
- exp veya expdp ile alınan bir .dmp dosyası ikilidir: dosyayı bir Oracle veritabanına, örneğin Docker'daki Oracle Database Free'ye içe aktarın ve SQL Developer ile dışa aktarın.
Neler dönüştürülmez
Görünümler, paketler, saklı yordamlar, fonksiyonlar, tetikleyiciler, türler ve eş anlamlılar PL/SQL ile yazılır. Raporda adlarıyla listelenirler, asla sessizce atlanmazlar; böylece onları PostgreSQL için yeniden yazabilirsiniz.
Oracle - PostgreSQL dönüştürme hakkında sorular
Yanıtınızı bulamadınız mı? İletişim sayfasından bize yazın, bir kişi yanıt verir. İletişim sayfası
Dökümüm yükleniyor mu?
Hayır. Dönüştürücü tarayıcınızda çalışır ve dökümü diskinizden parça parça okur; böylece döküm bilgisayarınızdan hiç çıkmaz. Masaüstü uygulaması ve komut satırı da bilgisayarınızda dönüştürür.
Döküm ne kadar büyük olabilir?
Dönüştürücü dökümün tamamını asla bellekte tutmaz: dosyayı aralıklar halinde iki kez okur ve betiği ilerledikçe yazar. Birkaç gigabaytlık dökümler tarayıcıda, masaüstü uygulamasında ve komut satırıyla dönüştürülür.
exp veya expdp ile alınan bir .dmp dosyasını dönüştürebilir miyim?
Doğrudan değil: Data Pump ve özgün Export, yalnızca Oracle'ın okuyabildiği ikili bir biçim yazar. Dosyayı herhangi bir Oracle veritabanına içe aktarın (Oracle Database Free Docker'da çalışır) ve SQL Developer'ın Database Export aracıyla veya SQLcl ile dışa aktarın. Dönüştürücü bir .dmp dosyası aldığında bunu söyler.
Dışa aktarım hangi Oracle sürümlerinden gelebilir?
Oracle 11g ve sonrasından, DBMS_METADATA tablo tanımlarıyla SQL Developer ve SQLcl dışa aktarımları. Her test dışa aktarımı Amerikan, Alman ve ISO oturumlarında Oracle 21c ve 23ai'den gelir ve kaynağıyla hücre hücre karşılaştırılır.
NUMBER, DATE ve diğer Oracle türleri ne olur?
NUMBER numeric olur, her değer tam sayıysa bigint; DATE saatini koruyarak timestamp olur; CLOB text, BLOB ve RAW bytea, BINARY_DOUBLE NaN ve Infinity ile double precision, interval'lar ise interval olur.
Kimlik sütunları ve sequence'lar korunuyor mu?
Evet. Kimlik sütunları kimlik sütunu olarak kalır ve en yüksek id'den sonra devam eder; bir tetikleyicinin bir sequence'tan doldurduğu sütun da öyle. Sequence'lar, dışa aktarımın ulaştıklarını söylediği değerden devam eder.
PL/SQL paketleri, saklı yordamlar ve tetikleyiciler ne olur?
Raporda adlarıyla listelenirler ve dönüştürülmezler, çünkü her veritabanı onları kendi dilinde yazar.
Betik hangi PostgreSQL sürümlerinde yüklenir?
PostgreSQL 13 ile 18 arası. Aynı betik her birinde yüklenir ve bir sorun çıkarsa ilk hatada durur.