以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.022-oo.cn/bbs/index.asp) -- Oracle數(shù)據(jù)庫(kù) (http://www.022-oo.cn/bbs/list.asp?boardid=65) ---- 4月14日 從文件(*.csv或*.txt)導(dǎo)入Oracle數(shù)據(jù)庫(kù)Java源代碼 (http://www.022-oo.cn/bbs/dispbbs.asp?boardid=65&id=2507) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-12-11 11:11:37 -- 4月14日 從文件(*.csv或*.txt)導(dǎo)入Oracle數(shù)據(jù)庫(kù)Java源代碼 近期由于項(xiàng)目需要,實(shí)現(xiàn)了從.csv或者.txt文件中讀取每行信息后插入到Oracle數(shù)據(jù)庫(kù)中的功能,特共享出來(lái)。用到第三方開(kāi)源工具包: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)文件的列名和類(lèi)型信息--> <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,文件中每張表的列名和類(lèi)型需要和導(dǎo)入的目標(biāo)表一致,且順序和文件中要導(dǎo)入的內(nèi)容相匹配,例如下面的csv文件: "ID","DEP","NAME","AREA","AGE","SEX","XUELI","SALARY","PRIX" 可以看到導(dǎo)入的順序和上述XML文件中的列名一致。 如果從文件導(dǎo)入到數(shù)據(jù)庫(kù)中完全匹配,只需配置文件中的<Bean name="ImportDirectImpl" class="fileimport.ImportDirectImpl"/>即可,代碼中調(diào)用示例: sp; FileImportInitFactory.init(); ImportFileEntry()的importFile方法說(shuō)明: 至此,一個(gè)簡(jiǎn)單的不需做任何處理直接從文件導(dǎo)入數(shù)據(jù)庫(kù)對(duì)應(yīng)表的功能就實(shí)現(xiàn)了。 但是有些時(shí)候我們需要進(jìn)行特殊的處理,例如表中的當(dāng)前操作日期列在導(dǎo)入文件中沒(méi)有,需要在代碼中加入,這時(shí)就需要實(shí)現(xiàn)FileImportInterface接口并加入到配置文件中例如:<Bean name="ImportWISImpl" class="fileimport.ImportWISImpl"/>,ImportWISImpl的實(shí)現(xiàn)代碼見(jiàn)后續(xù)代碼清單。 t;);
; insertNum = 1; public void close() { /** }
import java.util.HashMap; public class ImportFileExample { |