回覆列表
  • 1 # 使用者9186333210396

     imp匯入資料指定表空間,大致有以下幾種方法可以:

      1. 有一個簡單的方法,適用於資料比較少的情況:直接使用UltraEdit打方DMP檔案,預設是16進位制,切換成文字模式,將裡面的:TABLESPACE "TS1"全部替換成TABLESPACE "TS2",然後再匯入,不用加什麼tablespaces=TS2之類的引數即可,當然加了也無所所謂。

      C:\>IMP USER2/USER2 log=C:\plsimp.log file=D:\database\USER1.dmp fromuser=USER1 touser=USER2 ignore=yes tablespaces=TS2

      不過有個缺點,如果DMP檔案有幾百M甚至幾G,嘿嘿嘿嘿,不知道UltraEdit有啥反應?

      2. 還有另外一種比較好的方法。基本思路都是先從 USER1匯出表結構(DMP或者SQL指令碼),然後在USER2使用者下建立空的資料庫表(如果是DMP,則參見方法1;如果是SQL指令碼,則稍作修改後以USER2使用者執行即可),再將包括資料的DMP匯入,注意要設IGNORE=Y,並指定FROMUSER和TOUSER。具體實現方法為:

      (1)先用工具匯出USER1的表結構(不要匯出CHECK和FK,特別是FK!),TOAD和 PL/SQL都有此功能。PL/SQL Developer匯出表結構:Tools-->Export User Objects(匯出使用者物件) -->選擇要匯出的表(包括Sequence等)-->.sql檔案,匯出的都為sql檔案。或者使用imp的indexfile選項生成表結構的SQL指令碼。

      (2)在USER2使用者下建立相同的表結構

      (3)匯入完整的資料

      PS:

      PL/SQL Developer工具操作步驟:

      (1)匯出表結構:

      Tools-->Export User Objects(匯出使用者物件) -->選擇要匯出的表(包括Sequence等)-->.sql檔案,匯出的都為sql檔案

      (這一步也可以匯出一個只包括表結構的DMP檔案。)

      (2)匯出表資料:

      Tools-->Export Tables-->選擇表,選擇SQL Inserts-->.sql檔案

      (這一步也可以匯出一個包括表結構和資料或者只有資料沒有表結構圖的DMP檔案。)

      (3)匯入表結構:

      (如果是隻包括表結構的DMP檔案,則使用UltraEdit修改表空間,再匯入。如方法1)

      (4)匯入表資料:

      執行剛剛匯出的sql檔案

      (如果是DMP檔案,則直接匯入即可,注意要設IGNORE=Y,並指定FROMUSER和TOUSER。)

      IMP命令操作步驟:

      首先:exp user/pw file=file.dmp owner=yourUser1

      然後:imp user/pw file=file.dmp indexfile=xxxx.sql fromuser=yourUser1 touser=yourUser2

      隨後:修改xxxx.sql中的關於有表空間設定的地方為新的表空間,並去掉相關的註釋(rem),然後執行xxxx.sql建立相關物件。

      最後:imp user/pw file=file.dmp fromuser=yourUser1 touser=yourUser2 ignore=y

  • 中秋節和大豐收的關聯?
  • 如果你在路上偶遇了蔡依林,你想對她說什麼?