<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
    主站蜘蛛池模板: 国产午夜无码片免费| 大地资源在线资源免费观看| 亚洲精品第一国产综合境外资源| 一区二区三区免费视频播放器| 亚洲精品制服丝袜四区| 国产国产人免费视频成69堂| 国产精品亚洲一区二区三区久久 | 亚洲人成网国产最新在线| 日韩免费福利视频| 91成人免费福利网站在线| 亚洲免费观看网站| 亚洲AV无码乱码在线观看性色扶 | 精品亚洲成a人片在线观看少妇| 日本一区二区三区免费高清| 一个人看的www免费在线视频| 久久精品国产亚洲AV无码麻豆| 国产成人aaa在线视频免费观看| 在线观看免费无码专区| 亚洲乱色伦图片区小说| 亚洲今日精彩视频| www国产亚洲精品久久久| 国产大片91精品免费观看不卡| 一道本在线免费视频| 色偷偷亚洲女人天堂观看欧| 亚洲一区二区三区AV无码| 黄网址在线永久免费观看| 久久免费观看国产精品88av| 美女露隐私全部免费直播| 亚洲春黄在线观看| 亚洲精品V欧洲精品V日韩精品| 成年人在线免费观看| 美丽姑娘免费观看在线观看中文版| 国产成人人综合亚洲欧美丁香花| 亚洲久本草在线中文字幕| 亚洲日本中文字幕一区二区三区| 永久免费av无码网站韩国毛片| 日韩免费电影网址| 久久国产免费直播| 免费毛片毛片网址| 亚洲美国产亚洲AV| 亚洲首页国产精品丝袜|