国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java中使用Oracle的客戶端 load data和sqlldr命令執(zhí)行數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中

2019-11-15 00:54:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
java中使用Oracle的客戶端 load data和sqlldr命令執(zhí)行數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)

Windows環(huán)境下測(cè)試代碼:

import java.io.File;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.PRintWriter;import java.util.Scanner;public class testTimer {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        // ./szrpp_files/clPath        //寫控制文件.ctl        String fileRoute = "D://files//";//文件地址路徑        String fileName = "db.txt";//數(shù)據(jù)文件名        String tableName = "testtable";//表名        String fieldName = "(Source,File,Date,FileNum,RechargeSerial,Status)";//要寫入表的字段        String ctlfileName = "ctlName.ctl";//控制文件名                stlFileWriter(fileRoute,fileName,tableName,fieldName,ctlfileName);        //要執(zhí)行的DOS命令        String user = "SCOTT";        String psw = "123456";        String Database = "ORCL";        String logfileName = "logName.log";        Executive(user,psw,Database,fileRoute,ctlfileName,logfileName);            }        /**     * * 寫控制文件.ctl     * @param fileRoute 數(shù)據(jù)文件地址路徑     * @param fileName 數(shù)據(jù)文件名     * @param tableName 表名     * @param fieldName 要寫入表的字段     * @param ctlfileName 控制文件名     */    public static void stlFileWriter(String fileRoute,String fileName,String tableName,String fieldName,String ctlfileName)    {        FileWriter fw = null;        String strctl = "OPTIONS (skView Code

linux環(huán)境下的測(cè)試代碼:

import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;public class TestLinux {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        // ./szrpp_files/clPath        //寫控制文件.ctl                String fileRoute = "/home/test/files/clPath/";//文件地址路徑        String fileName = "db.txt";//數(shù)據(jù)文件名        String tableName = "testtable";//表名        String fieldName = "(Source,File,Date,FileNum,Status)";//要寫入表的字段        String ctlfileName = "ctltest.ctl";//控制文件名            stlFileWriter(fileRoute,fileName,tableName,fieldName,ctlfileName);        //要執(zhí)行的DOS命令        String user = "scott";        String psw = "123456";        String Database = "ORCL";        String logfileName = "logtext.log";        Executive(user,psw,Database,fileRoute,ctlfileName,logfileName);    }        /**     * * 寫控制文件.ctl     * @param fileRoute 數(shù)據(jù)文件地址路徑     * @param fileName 數(shù)據(jù)文件名     * @param tableName 表名     * @param fieldName 要寫入表的字段     * @param ctlfileName 控制文件名     */    public static void stlFileWriter(String fileRoute,String fileName,String tableName,String fieldName,String ctlfileName)    {        FileWriter fw = null;        String strctl = "OPTIONS (skip=0)" +        " LOAD DATA INFILE '"+fileRoute+""+fileName+"'" +        " APPEND INTO TABLE "+tableName+"" +        " FIELDS TERMINATED BY ','" +        " OPTIONALLY  ENCLOSED BY /"'/"" +        " TRAILING NULLCOLS "+fieldName+"";         try {            fw = new FileWriter(fileRoute+""+ctlfileName);            fw.write(strctl);         }          catch (IOException e)         {               e.printStackTrace();        }        finally {            try             {                fw.flush();                fw.close();            }             catch (IOException e)            {                e.printStackTrace();            }                    }    }        /**     * 調(diào)用系統(tǒng)DOS命令     * @param user      * @param psw     * @param Database     * @param fileRoute 文件路徑     * @param ctlfileName 控制文件名     * @param logfileName 日志文件名     */    public static void Executive(String user,String psw,String Database,String fileRoute,String ctlfileName,String logfileName)    {        InputStream ins = null;        //要執(zhí)行的DOS命令        String dos="sqlldr "+user+"/"+psw+"@"+Database+" control="+fileRoute+""+ctlfileName+" log="+fileRoute+""+logfileName;        //Linux環(huán)境下注釋掉        //String[] cmd = new String[]        //{ "cmd.exe", "/C", dos }; // Windows環(huán)境 命令        try        {            Process process = Runtime.getRuntime().exec(dos);            ins = process.getInputStream(); // 獲取執(zhí)行cmd命令后的信息//            BufferedReader reader = new BufferedReader(new InputStreamReader(ins));//            String line = null;//            while ((line = reader.readLine()) != null)//            {//                String msg = new String(line.getBytes("ISO-8859-1"), "UTF-8");//                System.out.println(msg); // 輸出//            }            int exitValue = process.waitFor();            if(exitValue==0)            {                System.out.println("返回值:" + exitValue+"/n數(shù)據(jù)導(dǎo)入成功");                            }else            {                System.out.println("返回值:" + exitValue+"/n數(shù)據(jù)導(dǎo)入失敗");                            }                        process.getOutputStream().close(); // 關(guān)閉        }        catch (Exception e)        {            e.printStackTrace();        }    }}
View Code

特別注意:

1.你的程序部署在什么服務(wù)器下面 是在Oracle數(shù)據(jù)庫(kù)服務(wù)器下 數(shù)據(jù)庫(kù)連接配置地址可以不指明,如果部署在其他服務(wù)器下不在數(shù)據(jù)庫(kù)服務(wù)器下數(shù)據(jù)庫(kù)名的連接地址要指向明確的 所在數(shù)據(jù)庫(kù)服務(wù)器IP地址,這個(gè)自己可以多次試驗(yàn)測(cè)試就曉得了。

2.測(cè)試程序只是實(shí)現(xiàn)了功能,但是放到你的項(xiàng)目程序中一定要多多測(cè)試自然會(huì)發(fā)現(xiàn)問(wèn)題的,這個(gè)測(cè)試代碼放到你的項(xiàng)目中時(shí)候一定要注意一些代碼的改造,具體自己多測(cè)試就發(fā)現(xiàn)了。可以簡(jiǎn)單說(shuō)明下 就在Executive()這個(gè)方法里面的代碼只要稍加改造就好了,自己摸索下就明白了。

3.控制文件路徑最好這樣使用在引用到項(xiàng)目中時(shí)候:control="+clPath+File.separator+ctlfileName+" log="+clPath+File.separator+logfileName

4.針對(duì)這段代碼具體描述下

String strctl = "OPTIONS (skip=0)" +   // 0是從第一行開(kāi)始  1是 從第二行        " LOAD DATA INFILE '"+fileRoute+""+fileName+"'" +        " APPEND INTO TABLE "+tableName+"" + //覆蓋寫入        " FIELDS TERMINATED BY ',' " +  //--數(shù)據(jù)中每行記錄用","分隔 ,TERMINATED用于控制字段的分隔符,可以為多個(gè)字符。        " OPTIONALLY  ENCLOSED BY /"'/"" +  //源文件有引號(hào) '',這里去掉    ''''"        " TRAILING NULLCOLS "+fieldName+"";//--表的字段沒(méi)有對(duì)應(yīng)的值時(shí)允許為空  源數(shù)據(jù)沒(méi)有對(duì)應(yīng),寫入null

  


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 台南市| 棋牌| 林甸县| 湖州市| 福州市| 连城县| 共和县| 永川市| 武强县| 海盐县| 姜堰市| 梅州市| 大兴区| 葫芦岛市| 海阳市| 铜鼓县| 理塘县| 宜春市| 大连市| 石家庄市| 洪雅县| 神池县| 晴隆县| 夏邑县| 梅河口市| 尼木县| 太仆寺旗| 宜君县| 樟树市| 夏邑县| 陇西县| 金坛市| 茌平县| 金平| 呼和浩特市| 宜春市| 丹阳市| 哈巴河县| 凤山县| 织金县| 巴青县|