The important thing in life is to have a great aim , and the determination

          常用鏈接

          統計

          IT技術鏈接

          保險相關

          友情鏈接

          基金知識

          生活相關

          最新評論

          如何把大部分表中的數據遷移到另一個數據庫中

          需求描述:目前遠程服務器有兩個數據庫AA和BB,兩個數據庫的數據庫版本都為10.2.1.0.1,兩個數據庫中的用戶不一樣,但數據庫中的表結構都是一樣的,數據庫AA表中的數據比數據庫BB表中的數據多很多,現在需要把數據庫AA中幾十張表的數據遷移到數據庫BB的表中。如果在數據庫AA中存在的數據,但在數據庫BB中沒有的數據,則需要把這些數據導入到數據庫BB中。


            比如:數據庫AA 的數據庫名稱為AA,所有的表都在A_UserName用戶下,改用戶的密碼為A_Password;
                數據庫BB 的數據庫名稱為BB,所有的表都在B_UserName用戶下,改用戶的密碼為B_Password;


            假設本機是一臺windows系統的PC機,裝有Oracle數據庫10.2.1.0.1的版本(服務器版或客戶端版都可以),在該系統已經配置好數據庫的監聽器($ORACLE_HOME\NETWORK\ADMIN\tnsnames.ora).
          下面導出、導入兩個表為例子(當然幾十個表也是沒有問題的)

          1 導出數據庫AA中兩表的所有數據:


          D:\>expA_UserName/A_Password@AAtables=(DH_REP_WORK,DRILL_ADM_YEAR_TARGET) file=20081029  log=20081029.log
          Export: Release 10.2.0.1.0 - Production on 星期三 10月 29 16:11:20 2008
          Copyright (c) 1982, 2005, Oracle.  All rights reserved.


          連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options

          已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集


          即將導出指定的表通過常規路徑...
          . . 正在導出表                     DH_REP_WORK導出了           1 行
          . . 正在導出表           DRILL_ADM_YEAR_TARGET導出了          40 行
          成功終止導出, 沒有出現警告。

          從上面可以看出來成功導出來遠程數據庫AA中兩表的數據。

          2  導入到數據庫BB中(請先看下面的錯誤原因)

          D:\>impB_UserName/B_Password@BBtables=(DH_REP_WORK,DRILL_ADM_YEAR_TARGET)  file=20081029  log=20081029imp.log

          Import: Release 10.2.0.1.0 - Production on 星期三 10月 29 16:13:33 2008

          Copyright (c) 1982, 2005, Oracle.  All rights reserved.


            連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options

          經由常規路徑由 EXPORT:V10.02.01 創建的導出文件IMP-00013: 只有 DBA 才能導入由其他 DBA 導出的文件IMP-00000: 未成功終止導入

          不能導入原來是B_UserName用戶沒有具有DBA角色的權限。

          3、登陸到數據庫BB中,用超級用戶sys給B_UserName用戶授權


          SQL> grant dba to B_UserName;
          Grant succeeded.

          4 、現在重新導入到數據庫BB中,為了減少日志的錯誤使用ignore=yes(忽略錯誤),rows=y是導入表中的數據,grants=no表示不導入授權(假如在數據庫AA中表DH_REP_WORK授權給了test用戶,但數據庫BB中沒有test用戶,則不用執行授權給test用戶)。

          D:\>imp   B_UserName/B_Password@BB   tables=(DH_REP_WORK,DRILL_ADM_YEAR_TARGET)   rows=y ignore=yes  grants=no  file=20081029   log=20081029Imp.log

          執行上面的語句,可能會有些錯誤提示,一般是在數據庫BB中的已經存在該數據,由于主鍵的唯一性,所以不能插入。但數據庫AA中存在、但數據庫BB中不存在的數據就可以順利的插入到數據庫BB中了。

          5、登陸到數據庫BB中,用超級用戶sys回收B_UserName用戶dba的角色:


          SQL> revoke dba from B_UserName;
          Revoke succeeded.

          posted on 2008-11-13 14:47 鴻雁 閱讀(622) 評論(0)  編輯  收藏 所屬分類: IT技術相關

          主站蜘蛛池模板: 上杭县| 阜南县| 综艺| 温州市| 绥中县| 韩城市| 新巴尔虎右旗| 车险| 青冈县| 湖南省| 桐梓县| 北京市| 镇沅| 望江县| 江西省| 新龙县| 仁怀市| 色达县| 汤阴县| 昌乐县| 毕节市| 浦江县| 沙河市| 阿图什市| 施秉县| 当涂县| 榕江县| 宝清县| 宣威市| 滁州市| 澄迈县| 顺昌县| 静宁县| 清河县| 古田县| 浮梁县| 遵义市| 富顺县| 依安县| 红桥区| 棋牌|