以文本方式查看主題 - 曙海教育集團論壇 (http://www.hufushizhe.com/bbs/index.asp) -- Oracle數據庫 (http://www.hufushizhe.com/bbs/list.asp?boardid=65) ---- 4月14日 從文件(*.csv或*.txt)導入Oracle數據庫Java源代碼 (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=65&id=2507) |
-- 作者:wangxinxin -- 發布時間:2010-12-11 11:11:37 -- 4月14日 從文件(*.csv或*.txt)導入Oracle數據庫Java源代碼 近期由于項目需要,實現了從.csv或者.txt文件中讀取每行信息后插入到Oracle數據庫中的功能,特共享出來。用到第三方開源工具包:opencsv-1.8.jar和commons-dbutils-1.1.jar,需單獨下載。 首先需要配置XML文件,如下: <?xml version="1.0" encoding="UTF-8"?> <root> <DefaultImport>Employee</DefaultImport> <TargetTable tableName="EMPLOYEE_TEST"> <!--表中對應文件的列名和類型信息--> <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個導入工作:(1)表EMPLOYEE_TEST(2)表YFJBXX_TEST,文件中每張表的列名和類型需要和導入的目標表一致,且順序和文件中要導入的內容相匹配,例如下面的csv文件: "ID","DEP","NAME","AREA","AGE","SEX","XUELI","SALARY","PRIX" 可以看到導入的順序和上述XML文件中的列名一致。 如果從文件導入到數據庫中完全匹配,只需配置文件中的<Bean name="ImportDirectImpl" class="fileimport.ImportDirectImpl"/>即可,代碼中調用示例: sp; FileImportInitFactory.init(); ImportFileEntry()的importFile方法說明: 至此,一個簡單的不需做任何處理直接從文件導入數據庫對應表的功能就實現了。 但是有些時候我們需要進行特殊的處理,例如表中的當前操作日期列在導入文件中沒有,需要在代碼中加入,這時就需要實現FileImportInterface接口并加入到配置文件中例如:<Bean name="ImportWISImpl" class="fileimport.ImportWISImpl"/>,ImportWISImpl的實現代碼見后續代碼清單。 t;);
; insertNum = 1; public void close() { /** }
import java.util.HashMap; public class ImportFileExample { |