<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0
    數據遷移(從mysql3.1遷移到oralce10G)
    ssuupv 發表于 2006-3-2 15:29:00

    最近做了一項目數據移植工作:根據客戶的需求。把原先,mysql3.1平臺的數據遷移到oracle10g:

     剛開始我想通過oralce提供的oracle migration workbench,可是使用中碰到一些問題,一直沒搞出來,在網上也查找不到解決的方案,具體的問題我也不多說了。

     在用戶催了N次的時候,我忽然來了個靈感通過程序的方式,原理,1,從mysql一張表取出所有數據,2,存放到oracle10g 目標數據表里,3.重復執行1,2步驟,直到所有表導入。

    接下來我講一下,我的解決過程。

    我們開發的平臺是用webwork+spring+hibernate。

    1。配置二個hibernate.配置文件1.hibernate_for_mysql.cfg.xml hibernate_for_oracle.cfg.xml

    .hibernate_for_oracle.cfg.xm部分配置:

    ? <property name="hibernate.connection.url"><![CDATA[
    ??????????? jdbc:oracle:thin:@localhost:1521:orcl
    ??????? ]]></property>
    ??????? <!-- Database JDBC driver-->
    ??????? <property name="hibernate.connection.driver_class">
    ??????????? oracle.jdbc.driver.OracleDriver
    ??????? </property>

    hibernate_for_oracle.cfg.xm部分配置:

    ??????? <property name="hibernate.connection.url"><![CDATA[
    ??????????? jdbc:mysql://localhost/flydonkey?useUnicode=true&characterEncoding=gbk
    ??????? ></property>
    ??????? <!-- Database JDBC driver-->
    ??????? <property name="hibernate.connection.driver_class">
    ??????????? org.gjt.mm.mysql.Driver
    ??????? </property>

    2.在spring.xml配置bean主要負責數據遷移的

    ?<bean id="sessionFactory_for_mysql" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" singleton="true">
    ??<property name="configLocation">
    ???<value>classpath:hibernate_for_mysql.cfg.xml</value>
    ??</property>
    ?</bean>
    ?
    ?<bean id="sessionFactory_for_oracle" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" singleton="true">
    ??<property name="configLocation">
    ???<value>classpath:hibernate_for_oracle.cfg.xml</value>
    ??</property>
    ?</bean>

    ?<bean id="getDataFromMysql" class="com.migration.GetDataFromMysqlImpl" singleton="true">
    ?<property name="sessionFactory">
    ??<ref bean="sessionFactory_for_mysql"/>
    ?</property>
    ?</bean>
    ?
    ?? <bean id="insertDataToOracle" class="com.migration.InsertDataToOracleImpl" singleton="true">
    ?<property name="sessionFactory">
    ??<ref bean="sessionFactory_for_oracle"/>
    ?</property>

    編寫bean文件,

    GetDataFromMysqlImpl代碼

    public class GetDataFromMysqlImpl extends EntityDaoImpl implements GetDataFromMysql {

    public List getData(String tableName) {
    ??????? // TODO Auto-generated method stub
    ????? Session session = null;
    ????? List result = null;
    ????? try{
    ????????? session = getSession(true);
    ???????? String strSql = "from "+tableName;
    ???????? result = session.createQuery(strSql).list();?
    ????? }catch(Exception e){
    ????????? e.printStackTrace();
    ????? }finally{
    ????????? try{
    ????????????? if(session!=null){
    ??????????????? session.close();
    ????????????? }
    ??????????? }catch(Exception e){
    ??????????????? e.printStackTrace();
    ??????????? }
    ????????? }
    ????? return result;
    ??? }
    }

    InsertDataToOracleImpl代碼

    public class GetDataFromMysqlImpl extends EntityDaoImpl implements GetDataFromMysql {???

    public void insertData(){

    ?? this.insertTabelName()

    }

    ?private void insertTableName() {
    ??????? Session session = null;
    ??????? Transaction tx = null;
    ??????? try {
    ??????????? session = getSession(true);
    ??????????? GetDataFromMysql gdfm = (GetDataFromMysql) ServiceLocator.getInstance().getService("getDataFromMysql");
    ??????????? List temp = gdfm.getData("tableName");
    ??????????? tx = session.beginTransaction();
    ??????????? if (temp != null) {
    ??????????????? Iterator it = temp.iterator();
    ??????????????? while (it.hasNext()) {
    ??????????????????? TableName?tableName = (TableName) it.next();
    ??????????????????? session.save(tabeName)
    ??????????????? }
    ??????????? }
    ??????????? tx.commit();
    ??????? } catch (Exception e) {
    ??????????? e.printStackTrace();
    ??????? } finally {
    ??????????? try {
    ??????????????? if (session != null) {
    ??????????????????? session.close();
    ??????????????? }
    ??????????? } catch (Exception e) {
    ??????????????? e.printStackTrace();
    ??????????? }
    ??????? }
    ??? }

    ??? }

    3.隨便寫個客戶端調用些方法。

    4編譯打包

    5.關閉oracle10g所有constraint

    6.運行程序

    100萬紀錄估計30min能跑完,根據各個機器配置高低,會有些差別。

    posted on 2006-03-31 13:10 MEYE 閱讀(518) 評論(0)  編輯  收藏 所屬分類: Study
    主站蜘蛛池模板: 免费无码又爽又刺激高潮视频| 99视频全部免费精品全部四虎| 久久国产精品亚洲一区二区| 精品国产sm捆绑最大网免费站| 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 | 国产男女爽爽爽爽爽免费视频| 亚洲AV日韩AV无码污污网站| 国产综合亚洲专区在线| 亚洲美女免费视频| 一个人看的www在线免费视频| 亚洲第一中文字幕| 免费人成网站在线高清| 色欲国产麻豆一精品一AV一免费| 亚洲精华液一二三产区| 亚洲va久久久噜噜噜久久 | 国产免费变态视频网址网站 | ww4545四虎永久免费地址| 美女视频黄.免费网址| 亚洲综合激情另类小说区| 久久精品国产亚洲一区二区三区 | 亚洲综合精品网站在线观看| 全免费毛片在线播放| 两性色午夜免费视频| 亚洲精品无播放器在线播放| 亚洲欧洲日韩不卡| 精品亚洲一区二区三区在线观看 | 亚洲一级毛片免观看| 久久亚洲国产成人精品无码区| 欧美大尺寸SUV免费| 国产婷婷成人久久Av免费高清 | 国产男女性潮高清免费网站 | 亚洲av无码一区二区三区乱子伦 | 黄色三级三级免费看| 亚洲天堂2017无码中文| 亚洲电影国产一区| 亚洲人成中文字幕在线观看| 免费又黄又爽的视频| 天天看片天天爽_免费播放| 2021在线永久免费视频| 永久在线观看免费视频| 成人毛片100免费观看|