<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    Rss & SiteMap

    曙海教育集團(tuán)論壇 http://www.bjzhda.cn

    曙海教育集團(tuán)論壇
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
    [瀏覽完整版]

    標(biāo)題:4月14日 從文件(*.csv或*.txt)導(dǎo)入Oracle數(shù)據(jù)庫Java源代碼

    1樓
    wangxinxin 發(fā)表于:2010-12-11 11:11:37
    近期由于項(xiàng)目需要,實(shí)現(xiàn)了從.csv或者.txt文件中讀取每行信息后插入到Oracle數(shù)據(jù)庫中的功能,特共享出來。用到第三方開源工具包:opencsv-1.8.jar和commons-dbutils-1.1.jar,需單獨(dú)下載。
    首先需要配置XML文件,如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    <DefaultImport>Employee</DefaultImport>
    <TargetTable tableName="EMPLOYEE_TEST">
    <!--表中對(duì)應(yīng)文件的列名和類型信息-->
    <ColumnFileInfo>
       <Column name="ID" type="String"/>
       <Column name="DEP" type="String"/>
       <Column name="NAME" type="String"/>
       <Column name="AREA" type="String"/>
       <Column name="AGE" type="Number"/>
       <Column name="SEX" type="String"/>
       <Column name="XUELI" type="String"/>
       <Column name="SALARY" type="Number"/>
       <Column name="PRIX" type="Date"/>
    </ColumnFileInfo>
    </TargetTable>

    <TargetTable tableName="YFJBXX_TEST">
       <ColumnFileInfo>
        <Column name="GLGXZJ" type="String"/>
       <Column name="YXTZJ" type="String"/>  
       <Column name="YFXM" type="String"/>   
       <Column name="JZDZ" type="String"/>   
       <Column name="JZDXZQH_DM" type="String"/>   
       <Column name="HJDZ" type="String"/>   
       <Column name="HJDXZQH_DM" type="String"/>   
       <Column name="SFZH" type="String"/>     
       <Column name="CSRQ" type="String"/>  
       <Column name="MZ_DM" type="String"/>   
       <Column name="WHCD_DM" type="String"/>
       <Column name="HKXZ_DM" type="String"/>
       <Column name="HYZK_DM" type="String"/>
       <Column name="CHRQ" type="String"/>   
       <Column name="JRXTRQ" type="String"/>
       <Column name="TCXTRQ" type="String"/>
       <Column name="TCYY_DM" type="String"/>
       <Column name="ZF_XM" type="String"/>  
       <Column name="ZF_JJDZ" type="String"/>   
       <Column name="ZF_JJDXZQHDM_DM" type="String"/>   
       <Column name="ZF_HJDZ" type="String"/>   
       <Column name="ZF_HJDXZQH_DM" type="String"/>   
       <Column name="ZF_SFZH" type="String"/>   
       <Column name="ZF_CSRQ" type="String"/>   
       <Column name="ZF_MZ_DM" type="String"/>   
       <Column name="ZF_WHCD_DM" type="String"/>
       <Column name="ZF_HKXZ_DM" type="String"/>
       <Column name="LGRZRQ" type="String"/>      
    </ColumnFileInfo>
    <ColumnCodeInfo>
        <Column name="LRSJ" type="Date"/>
       <Column name="SBPCH" type="String"/>
       <Column name="SBDWXZQH_DM" type="String"/>
    </ColumnCodeInfo>
    </TargetTable>

    <ImportDealClassList>
       <Bean name="ImportDirectImpl" class="fileimport.ImportDirectImpl"/>
       <Bean name="ImportWISImpl" class="fileimport.ImportWISImpl"/>
    </ImportDealClassList>
    <MaxCommitNumber>5000</MaxCommitNumber>
    </root>

    文件中描述了2個(gè)導(dǎo)入工作:(1)表EMPLOYEE_TEST(2)表YFJBXX_TEST,文件中每張表的列名和類型需要和導(dǎo)入的目標(biāo)表一致,且順序和文件中要導(dǎo)入的內(nèi)容相匹配,例如下面的csv文件:

    "ID","DEP","NAME","AREA","AGE","SEX","XUELI","SALARY","PRIX"
    "001","研發(fā)","張三","北京","34","女","本科","4546","1"
    "002","銷售","李四","天津","45","男","專科","4456","2"

    可以看到導(dǎo)入的順序和上述XML文件中的列名一致。

    如果從文件導(dǎo)入到數(shù)據(jù)庫中完全匹配,只需配置文件中的<Bean name="ImportDirectImpl" class="fileimport.ImportDirectImpl"/>即可,代碼中調(diào)用示例:
        //設(shè)置XML配置文件所在位置
        FileImportInitFactory.setConfigFileName("E:/EclipseProjects/WISImport/bin/fileimport/FileImportConfig.xml");
    &nb

    sp;   FileImportInitFactory.init();
        HashMap h = new HashMap(1,1);
        //如果有日期型的列,需要設(shè)置DateFormat并放入HashMap中
        h.put("DateFormat","yyyy-MM-dd HH:mm:ss");
        //執(zhí)行導(dǎo)入工作
        new ImportFileEntry().importFile("導(dǎo)入的文件路徑及名稱.csv","YFJBXX_TEST",false,"ImportDirectImpl",h);

    ImportFileEntry()的importFile方法說明:
    /**
       * 從文件導(dǎo)入到指定表中
       * @param fileName String 要導(dǎo)入文件名
       * @param tableName String 導(dǎo)入目標(biāo)表名
       * @param firstLineRead boolean 是否讀取第一行
       * @param dealClass 處理類名稱(例如配置文件中Bean name="ImportDirectImpl")
       * @param aHashMap 擴(kuò)展用,需特殊處理時(shí)可置入變量
       * @throws Exception
       */
    public void importFile(String fileName, String tableName, boolean firstLineRead,String dealClass,HashMap aHashMap) throws Exception ;

    至此,一個(gè)簡(jiǎn)單的不需做任何處理直接從文件導(dǎo)入數(shù)據(jù)庫對(duì)應(yīng)表的功能就實(shí)現(xiàn)了。

    但是有些時(shí)候我們需要進(jìn)行特殊的處理,例如表中的當(dāng)前操作日期列在導(dǎo)入文件中沒有,需要在代碼中加入,這時(shí)就需要實(shí)現(xiàn)FileImportInterface接口并加入到配置文件中例如:<Bean name="ImportWISImpl" class="fileimport.ImportWISImpl"/>,ImportWISImpl的實(shí)現(xiàn)代碼見后續(xù)代碼清單。

    t;);
                columnListInfoCode[i][0] = columnName;
                columnListInfoCode[i][1] = columnType;
                System.out.println("Code columnName:" + columnName + " columnType:" + columnType);
              }
            }
            //生成實(shí)例
            ImportTableInfoBO importAction = new ImportTableInfoBO();
            importAction.setTableName(tableName);
            importAction.setColumnNamesFile(columnListInfoFile);
            if (columnListInfoCode != null) {
              importAction.setColumnNamesCode(columnListInfoCode);
            }
            //放入靜態(tài)容器中
            importJobList.put(tableName, importAction);
          }
          //2.其他配置信息
          Element importDealClassList = (Element) eroot.getElementsByTagName("ImportDealClassList").item(0);
          String className;
          String classFullName;
          NodeList beanList = importDealClassList.getElementsByTagName("Bean");
          for (int j=0; j < beanList.getLength(); j++){
            className = ( (Element) beanList.item(j)).getAttribute("name");
            classFullName = ( (Element) beanList.item(j)).getAttribute("class");
            dealClassList.put(className,classFullName);
          }
         
          System.out.println("importJobList.size()" + importJobList.size());
          System.out.println("dealClassList.size()" + dealClassList.size());

     

    ;      insertNum = 1;
            } else {
              insertNum++;
            }
          }
        } catch (Exception e) {
          e.printStackTrace();
          //---寫入數(shù)據(jù)庫待加入----
          //log.error(e.getMessage());
        }
    }

    public void close() {
        if (conn != null) {
          try {
            if (conn != null) {
              DbUtils.commitAndClose(conn);
            System.out.println("close end");
            }
          } catch (SQLException e) {
            e.printStackTrace();
            //log.error(e.getCause());
          }
        }
    }

    /**
       *
       * @param dateString String
       * @param format String
       * @return Date
       */
    public Date formatDate(String dateString,String format){
        try{
          SimpleDateFormat f = new SimpleDateFormat(format);
          return f.parse(dateString);
        }catch(Exception e){
          return null;
        }
    }

    }


    八、調(diào)用示例
    package fileimport;

    import java.util.HashMap;

    public class ImportFileExample {
    public ImportFileExample() {
    }
    public static void main(String[] args) {
       try {
         String ls = "c:/temp/employee_test.csv";

    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

    Copyright © 2000 - 2009 曙海教育集團(tuán)
    Powered By 曙海教育集團(tuán) Version 2.2
    Processed in .03125 s, 2 queries.
    主站蜘蛛池模板: 国产手机精品视频| 日韩精品视频美在线精品视频| 国产又黄又爽胸又大免费视频| chinesegay成年男人露j网站| 成人综合国产乱在线| 亚洲二区在线视频| 欧美色视频在线| 囯产精品一品二区三区| 韩国三级hd中文字幕| 国产精品视频一区二区三区经| 一道本在线观看| 日日AV色欲香天天综合网| 亚洲成av人片在线观看www| 男人j进女人p免费视频| 国产亚洲精品国产福利在线观看| 80电影天堂网理论r片| 天堂va视频一区二区| 久久99国产精品久久99果冻传媒| 日韩欧美中文字幕出| 亚洲欧洲自拍拍偷午夜色无码| 狠狠综合欧美综合欧美色| 国产v片免费播放| 露暴的楠楠健身房单车| 国产精品欧美一区二区在线看| 一本大道无码人妻精品专区| 我和麻麻的混乱生活| 五月天婷婷综合网| 欧美va天堂在线电影| 亚洲自拍欧美综合| 男人操女人的免费视频| 国产一级特黄aa级特黄裸毛片| 香蕉精品视频在线观看| 国产精品国产三级国产普通话 | 国产在线五月综合婷婷| 18禁美女黄网站色大片免费观看 | 一根巨茎走天下小说| 手机国产乱子伦精品视频| 久久精品国产色蜜蜜麻豆| 最近高清中文在线字幕在线观看 | 亚洲视频日韩视频| 理论片午午伦夜理片影院99|