我有一個 Oracle 11g 磁區表,它有 10 個磁區來存盤十年的資料,每個磁區都在自己的按范圍磁區的表空間上。每個年磁區包含 12 個月磁區。
在使用 ora2pg 將所有資料庫遷移到 Postgresql 10.7 之前,我想將此表轉換為非磁區表。
我讀過我可以先通過 expdp 備份此表,然后使用 impdp 的 PARTITIONS_OPTIONS 引數選項將其匯入。
但是是否也可以將以下陳述句用作嚴格等價的?
CREATE TABLE IF NOT EXISTS non_partitioned_table AS SELECT * FROM partitioned_table
我不會丟失任何資料,但是索引呢?
這兩個程式之間還有其他區別嗎?
uj5u.com熱心網友回復:
您發布的語法在 Oracle 中不存在(那里沒有if not exists子句)。
因此,你會
create table non_partitioned_table as select * from partitioned_table;
如果名稱non_partitioned_table已經存在的物件,該命令將失敗。
不會自動創建索引——你必須手動創建它們,但是——無論如何你都會在 PostgreSQL 中這樣做,不是嗎?為什么要在 Oracle 中打擾,因為您不會將該表用于任何用途(遷移目的除外);對?
uj5u.com熱心網友回復:
您可以使用 expdp 匯出 PARTITION 表。
然后使用 impdp 和 MERGE 選項將其匯入回非磁區表。如何將資料輸入 postgres 取決于您。
expdp TABLES=scott.part_tab USERID="' / as sysdba'" DIRECTORY=test_dir DUMPFILE=part_tab.dmp LOGFILE=part_tab.log
impdp USERID="'/ as sysdba'" TABLES=scott.part_tab DIRECTORY=test_dir DUMPFILE=part_tab.dmp LOGFILE=imp_part_tab.log REMAP_SCHEMA=scott:testuser
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/425314.html
