2018年7月18日 星期三

Java 一些應用 [ csv reader / array of class / for( : ) ]

分享一些工作上用到的寫法 ( java )


  1.  csv reader 
  2. array of class
  3. for (:) 

因為工作上需要讀取csv檔案的需求 , java 本身有提供一些 method 
首先要 import opencsv-3.8.jar 檔案(我當時是3.8版本的)

讀取檔案路徑:                                                                                                              
                m_csvFile=""; //file path                                                                                
                                                                                                                        
//Chose CSV File                                                                                            
JFileChooser fileChooser = new JFileChooser();                                           
int returnValue = fileChooser.showOpenDialog(null);                                    
if (returnValue == JFileChooser.APPROVE_OPTION){                                
File selectedFile = fileChooser.getSelectedFile();                                   
m_csvFile = selectedFile.getPath();                                                         
}else{                                                                                                               
// error handle...                                                                                       
}                                                                                                                       
return true;                                                                                                       
接著呼叫 CSVReader 物件:                                                                                           
                reader = new CSVReader(new FileReader(m_csvFile));                               
                                                                                                                                        
                // Reading All Records at once into a List<String[]>                                     
        List<String[]> records= reader.readAll(); //讀取csv資料到list裡面             
        reader.close();                                                                                                   
                // records.size() 就是讀取到 csv 所有筆數                                                    
        SpcData spcAry[] = new SpcData[records.size()];  //宣告 array of class       
                                                                                                                                         
for ( string[] csvRecord : records ) 的用法: records 陣列中,從第一個值取到最後一個值 
         for (String[] csvRecord records) {                                                                       
        spcAry[count] = new SpcData();                                                            
        spcAry[count].sht_id csvRecord [0];                                                     
        spcAry[count].mes_id csvRecord [1];                                                     
        spcAry[count].data_id csvRecord [2];                                                     
        spcAry[count].data_group= csvRecord [3];                                                   
        spcAry[count].data_attr = csvRecord [4];                                                      
        spcAry[count].u_spec csvRecord [5];                                                     
           spcAry[count].l_spec csvRecord [6];                                                     
        spcAry[count].data_value= csvRecord [7];                                                   
        count++;                                                                                                 
        }                                                                                                                       
                                                                                                                                 
SpcData 的 Class:                  
          private class SpcData { 
String sht_id;          
String mes_id;        
String data_id;       
String data_group; 
String data_attr;     
String l_spec;         
String u_spec;        
String data_value;  
}                                     

CSV Reader 參考網頁: https://www.callicoder.com/java-read-write-csv-file-opencs

2018年7月13日 星期五

利用excel 組 Oracle 語法

PMS_CHKLABEL

資料:

語法:


利用 excel 函數 (有日期格式)

=CONCATENATE("INSERT INTO PMS_CHKLABEL VALUES('",A2,"','",B2,"',TO_DATE('" & C2 & "', 'yyyy-mm-dd'),'",D2,"','",E2,"');")


PMS_CHK_ITEM

資料:


語法:





利用 excel 函數 (有日期格式)
=CONCATENATE("INSERT INTO PMS_CHKITEM VALUES('",A8,"','",B8,"','",C8,"','",D8,"','",E8,"','",F8,"');")



2018年7月5日 星期四

Oracle REGEXP_SUBSTR 用法

REGEXP_SUBSTR 寫法如下: 

REGEXP_SUBSTRDATA_GROUP , '   [ ^ _ ]   { 7 }  '  )
DATA_GROUP  : 欄位
 [ ^ _ ]       : 中括號裡面,^後的字元 = 停止字元,這表示(遇到 底線 就停止)
{ 7 }          : 取 7 個字元 
{ m }         : 取 m 個字元
{ m , }       : 最少取 m 個字元
{ m ,  n}    : 最少取 m 個字元 , 最多取 n 個字元


假設今天我們資料長這樣 ,
我們要擷取DATA_ATTR是"C"  的條件中
EQU_Mooney 其中的 Mooney 當作之後對應的數值
EQU_gravity(BC) gravity(BC) 
= > 簡單來說就是取底線之後字串


如此就有我們想要的結果了



2018.07.05 備註: 
單獨使用 REGEXP_SUBSTR 抓字串顯示的話 , 是不會有什麼問題
如果要再把 REGEXP_SUBSTR 抓出來的字串做額外判斷 ex: like 
要注意後面他會補空白哦
因此要使用 TRIM 函數把空白清掉

情境如下: 
原本 TABLE 資料表










使用者只想要 DATA_ATTR為 "F" 的資料 , 並且要多機台欄位
而他的機台就是要去抓 DATA_ATTR為 "C" 去補

使用者想要呈現的樣子
語法如下 
ORACLE 要利用 | | 連接 字串 , TRIM 要去掉空白

結果



Java 一些應用 [ csv reader / array of class / for( : ) ]

分享一些工作上用到的寫法 ( java )  csv reader  array of class for (:)  因為工作上需要讀取csv檔案的需求 , java 本身有提供一些 method  首先要 import opencsv-3.8.jar ...