2016-09-09 11 views
0

CSVファイル名のcsv1、csv2の出力を増やしたいまた、作成したCSVファイルをZIP1とZIP2のようにインクリメントする必要がありますZIP1の内容はCSV1とZIP2あるCSV2あるファイル名を増やして出力ファイルを圧縮する方法

public void process(Variables variables) throws SQLException, IOException{//CUST ORDER FILE 
try{ 
    log.info("Processing table"); 
      connection connect = new connection(); 
      connect.setConnection(variables); 
      if (variables.conn!= null){ 
       Statement stmt = variables.conn.createStatement(); 
       String query="SELECT (SELECT SBS FROM STOREDEF WHERE STOREID=4) AS BRANCH, OD.DT_DATE as TRANS_DATE, OC.ORDER_CODE, \n" + 
       "OD.ORDER_BARCODE,OC.FIRST_NAME,OC.LAST_NAME,OC.ADDRESS,OC.CITY,OC.DISTRICT,OC.PHONE,OC.STATE, '' as DEL_DATE \n" + 
      ",OH.AMOUNT_ALREADY_PAID, OD.DT_TIME, \n" + 
      "CASE OD.DEPTNUM \n" + 
       "WHEN '90003' THEN '1' \n" + 
       "WHEN '90099' THEN '2' \n" + 
       "END AS ORDER_TYPE,TO.TID,TO.XACTNBR,'' AS ITEM_ORIGIN,OC.CUSTOMER_CODE AS ZONE_FIELD \n" + 
       "FROM ORDERS_CUSTOMERS OC \n" + 
       "LEFT JOIN ORDERS_DETAILS OD \n" + 
       "ON OC.ORDER_CODE = OD.ORDER_CODE \n" + 
       "LEFT JOIN ORDERS_HEADER OH \n" + 
       "ON OC.ORDER_CODE=OH.ORDER_CODE \n" + 
       "LEFT JOIN TL_ORDERS TO \n" + 
       "ON OC.ORDER_CODE=TO.ORDERCODE \n" + 
       "WHERE OD.DT_DATE = '2016-07-19' AND OD.DT_TIME BETWEEN '10:00:00' AND '23:00:00'"; 
       ResultSet myRs = stmt.executeQuery(query); 
       log.info("Query executed"); 
       if(myRs.next()){ 
        String BRANCH =myRs.getString("BRANCH"); 
        String TRANS_DATE = myRs.getString("TRANS_DATE"); 
        String ORDER_CODE = myRs.getString("ORDER_CODE"); 
        String ORDER_BARCODE = myRs.getString("ORDER_BARCODE"); 
        String FIRST_NAME = myRs.getString("FIRST_NAME"); 
        String LAST_NAME = myRs.getString("LAST_NAME"); 
        String ADDRESS = myRs.getString("ADDRESS"); 
        String CITY = myRs.getString("CITY"); 
        String DISTRICT = myRs.getString("DISTRICT"); 
        String PHONE = myRs.getString("PHONE"); 
        String STATE = myRs.getString("STATE"); 
        String DEL_DATE =myRs.getString("DEL_DATE"); 
        String AMOUNT_ALREADY_PAID = myRs.getString("AMOUNT_ALREADY_PAID"); 
        String ORDER_TYPE = myRs.getString("ORDER_TYPE"); 
        String TID = myRs.getString("TID"); 
        String XACTNBR = myRs.getString("XACTNBR"); 
        String ITEM_ORIGIN = myRs.getString("ITEM_ORIGIN"); 
        String ZONE_FIELD = myRs.getString("ZONE_FIELD"); 

       } 

      Date date = new Date() ; 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss") ; 
     String CSVFile = "C:\\Vstore\\OurHome\\sales\\CUSTOURHOMEMEGAMALL123"+dateFormat.format(date)+".CSV"; 
     CSVWriter writer = new CSVWriter(new FileWriter(CSVFile), 
       '|', 
       CSVWriter.NO_QUOTE_CHARACTER, 
       CSVWriter.NO_ESCAPE_CHARACTER, 
       "\r\n"); 
     String[] header = {"BRANCH"+ 
       "|TRANS_DATE"+ 
       "|ORDER_CODE"+ 
       "|ORDER_BARCODE"+ 
       "|FIRST_NAME"+ 
       "|LAST_NAME"+ 
       "|ADDRESS"+ 
       "|CITY"+ 
       "|DISTRICT"+ 
       "|PHONE"+ 
       "|STATE"+ 
       "|DEL_DATE"+ 
       "|AMOUNT_ALREADY_PAID"+ 
       "|ORDER_TYPE"+ 
       "|TID"+ 
       "|XACTNBR"+ 
       "|ITEM_ORIGIN"+ 
       "|CUSTOMER_CODE"}; 
     writer.writeNext(header); 
     writer.writeAll(myRs,false); 
     log.info("csv created"); 


     writer.close(); 
     myRs.close(); 
     stmt.close(); 
      } 
     variables.conn.close(); 
     log.info("done processing"); 

      } catch(Exception e){ 
       log.error("Error in processing"); 
    } 
} 

答えて

0

ファイルてFileWriter()コンストラクタに渡します、驚き、名前を取得します。

だから、あなたがしなければならない唯一の事:

文字列numberedCsvFile = csvFileName + "1"。

などです。

もちろん、実際のトリックは:を既に保存しています。作成済みのcsvファイルです。そこに到達する方法は2つあります。

  1. すべてのファイルがあなたのプログラムの同じインスタンスによって作成されている場合は、あなただけの内部カウンタを維持する(新しいCSVファイルを書いた後、あなたはそれをインクリメント)
  2. それ以外の場合、プログラムは "output"ディレクトリの内容をチェックする必要があります。いくつの ".csvN"ファイルがすでにそこにあるのか見てみましょう。それは.csv1と.csv2が存在することを発見したときので、作成するために、次のものが.csv3

はJavaでZIPファイルを作成する方法を学習することです、あなたはhereを読み始めることができます。

いくつかの注意:

  1. Javaの命名規則についての記事を読みます。変数は、たとえCSVFileと呼ばれる場合でも、常にcamelCaseになります。
  2. 私は、.csv1、csv2、...という名前ではなく、 "file-1.csv"、 "file-2.csv"というように指定することをお勧めします。ファイル名拡張子には特定の意味があります。それを本当に必要とせずに「腐敗させる」べきではありません。
+0

私のプログラムが毎時間実行されるスケジュールタスクを使用しています。どのように内部カウンタを追加しますか?また、zipファイルを作成する際に、自動的に生成されるファイルを圧縮したい場合は、 –

+0

私の答えは**あなたの質問に答えます。私はあなたにそれを実装するために必要なものを正確に教えました。あなた自身。それとも、あなたのための他の人々が**あなたのために働くことを期待していますか? – GhostCat

関連する問題