麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

集算器用作Java計算類庫的應(yīng)用結(jié)構(gòu)

2019-11-14 14:55:57
字體:
供稿:網(wǎng)友

集算器封裝了豐富的結(jié)構(gòu)化文件計算函數(shù),可讀入格式復(fù)雜的文本,進行結(jié)構(gòu)化文件計算,實現(xiàn)大文件游標計算,簡化多線程并行計算。java應(yīng)用程序可以將集算器腳本文件當(dāng)做數(shù)據(jù)庫存儲過程執(zhí)行,傳入?yún)?shù)并用JDBC獲得返回結(jié)果。

集算器與Java應(yīng)用程序的集成結(jié)構(gòu)如下:

下面舉例說明Java集成集算器的一般方法。

文件sOrder.txt是tab分隔的文本文件,存儲著一批訂單信息。要求用JAVA對該文件進行條件查詢,返回指定時間段內(nèi)的訂單。

sOrder.txt部分數(shù)據(jù)如下:

步驟一:在集算器IDE中完成算法

A1:讀入文件。默認分隔符是tab,@t表示將第一行讀為列頭。

A2:執(zhí)行條件查詢。startDate和endDate是來自JAVA的參數(shù),比如2010-01-01至2010-12-31。

步驟二:在集算器IDE中查看計算結(jié)果

點擊A2可驗證計算結(jié)果:

步驟三:在JAVA中集成集算器腳本
JAVA主程序可以JDBC的方式調(diào)用集算器腳本,代碼如下:

       Class.forName(“com.esPRoc.jdbc.InternalDriver”);

       con= DriverManager.getConnection(“jdbc:esproc:local://”);

       //調(diào)用集算器腳本(類似存儲過程),其中orderQuery是dfx的文件名

       st =(com. esproc.jdbc.InternalCStatement)con.prepareCall(“call orderQuery (?,?)”);

       st.setObject(1,”2010-01-01″);

       st.setObject(2,”2010-12-31″);

       //執(zhí)行腳本

       st.execute();

       //獲取結(jié)果集

       ResultSet rs = st.getResultSet();

       ……

集算器默認返回最后一個單元格,也可用return語句返回指定單元格。返回值是符合JDBC標準的ResultSet對象,調(diào)用集算器腳本和訪問數(shù)據(jù)庫的方法完全一樣,熟悉JDBC的程序員可以很快掌握。

上面的例子說明了JAVA集成集算器的一般方法,下面說明幾種特殊情況。

簡單腳本無文件

集算器腳本比較簡單時,可以將腳本直接寫在JAVA中,而不必專門存儲一個腳本文件。比如前面的例子可以寫作:

       st = (com. esproc.jdbc.InternalCStatement)con.createStatement();

       ResultSet rs1 = st.executeQuery(“=file(/”D://sOrder.txt/”).import@t()/n” + “=A1.select(OrderDate>=date(/”2010-01-01/”) && OrderDate<=date(/”2010-12-31/”))”);

可以看到,行和行之間只需用回車“/n“來分隔(列之間用/t分隔)。

也可以使用prepareStatement對象執(zhí)行腳本,以便進行參數(shù)類型強制轉(zhuǎn)換。prepareStatement里的參數(shù)占位符在SQL中是問號,但問號是集算器的保留符號,因此要用”arg1,arg2,arg3”的形式依次占位,代碼如下:

       st= (com. esproc.jdbc.InternalCStatement)con.prepareStatement(“=file(/”D://sOrder.txt/”).import@t()/n” + “=A1.select(OrderDate>=arg1 && OrderDate<=arg2)”);

       java.util.Date  dateBegin  =  new SimpleDateFormat(“yyyy-MM-dd”).parse(“2010-01-01″);    

       java.sql.Date  sqlDateBegin  =  new java.sql.Date(dateBegin.getTime());

       java.util.Date  dateEnd  =  new SimpleDateFormat(“yyyy-MM-dd”).parse(“2010-12-31″);    

       java.sql.Date  sqlDateEnd  =  new java.sql.Date(dateEnd  .getTime());

       st.setDate(1, sqlDateBegin); 

       st.setDate(2, sqlDateEnd ); 

ResultSet rs1 = st.executeQuery(); 

大返回值

有時候計算結(jié)果會超出內(nèi)存,這時就要用集算器游標函數(shù)返回結(jié)果,相應(yīng)的JAVA要使用JDBC流來訪問。比如:按時間段查詢大文件sOrderBig.txt,集算器代碼如下:

函數(shù)cursor以游標方式打開大文件,函數(shù)select的查詢結(jié)果也是游標。

JAVA集成集算器的代碼如下:

       st =(com. esproc.jdbc.InternalCStatement)con.prepareCall(“call orderBigQuery (?,?)”);

       st.setObject(1,”2010-01-01″);

       st.setObject(2,”2010-12-31″);

       st.setFetchSize(1000);//設(shè)置每批次讀取的記錄數(shù)。

       st.execute();

       ResultSet rs = st.getResultSet();

       while (rs.next()) {

       ……

       }

涉及數(shù)據(jù)庫
如果計算時涉及數(shù)據(jù)庫,可在集算器中完成計算,并用集算器JDBC統(tǒng)一返回,而不必在JAVA中單獨集成數(shù)據(jù)庫。比如下面的代碼可將數(shù)據(jù)庫表emp對齊到sOrder.txt中。

關(guān)于在集算器中訪問數(shù)據(jù)庫請參考集算器輔助SQL編寫的應(yīng)用結(jié)構(gòu),JAVA集成集算器請參考集算器集成應(yīng)用之被JAVA調(diào)用

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人毛片视频免费看 | 91精品免费在线 | 国产小视频在线 | 久久久久久久.comav | 涩涩天堂| 免费a级网站 | 亚洲天堂中文字幕在线观看 | 国产精品剧情一区二区在线观看 | 亚洲一区二区三区在线免费观看 | 国产精品久久久久久久久久三级 | 91短视频版高清在线观看www | 九九色网站 | 久久av免费观看 | 亚洲国产女同久久 | 精品国产91久久久久久久 | 羞羞视频.www在线观看 | 欧美一级免费视频 | 日本网站在线看 | 九九视频精品在线观看 | 国产日韩线路一线路二 | 国产精品久久国产精麻豆96堂 | 看国产一级毛片 | 成人激情综合网 | 99国产精品白浆在线观看免费 | 91精品观看91久久久久久国产 | 久久久久久久久久久久久久国产 | 少妇的肉体的满足毛片 | 欧美一级免费视频 | 久久无 | 免费人成年短视频在线观看网站 | 黄污在线观看 | 看免费一级毛片 | 精品一区在线视频 | 中文字幕欧美一区二区三区 | 国产精品久久久免费观看 | 久久综合综合 | 男女羞羞视频在线免费观看 | 久久精品久 | 国产精品久久久免费观看 | 2023av在线视频 | 免费看黄色三级毛片 |