2012-02-02 3 views
-2

추출 데이터와 데이터베이스에 대한 새로운 질문을 엽니 다. 코드를 변경하고 수정했지만 여전히 작동하지 않습니다.플랫 파일에서 데이터를 가져 와서 데이터베이스에 데이터를 삽입하십시오.

플랫 파일 :

DT|00000001|TMDWH|UNIFI|00380520160|MAH SIEW YIN|11 |JALAN PP 2/8|TAMAN PUTRA PRIMA|PUCHONG|SELANGOR|47100|MALAYSIA|801110-14-5498||||||VOBB||A||11|JALAN PP 2/8|||TAMAN PUTRA PRIMA 

DT|00000002|TMDWH|UNIFI|00322012091|JUNITA BINTI JAMAL|6 10 KONDOMINIUM FAJARIA|JALAN PANTAI BARU|KUALA LUMPUR|KUALA LUMPUR|WILAYAH PERSEKUTUAN|59200|MALAYSIA|800129-09-5078||||||VOBB||A|||JALAN PANTAI BARU|6|KONDOMINIUM FAJARIA|KUALA LUMPUR  

프로그램 : 당신은 실제로 1 행의 필드의 두 배를 삽입하려는

public void massageData(String tmp) { 
    String[] fields = tmp.replace("\"", " ") 
         .replace("\'","\'\'") 
         .trim() 
         .split("\\s*\\|\\s*"); 

Connection conn = null; 
ResultSet rs = null; 
PreparedStatement stmt = null; 

String actualMSISDN = parseMSISDN(fields[5]); 

    if (actualMSISDN.length() > 8) { 
     String [] aNo = getAreaCode(actualMSISDN).split("\\|"); 
     field[0] = getiCtr(parseMSISDN(fields[5])); 

     String stateCode = lookupStateCode(State); 
     String sQuery = "insert into DATA_999 (,RecordType,RecordNumber,SourceSystemApplicationId,TargetApplicationId,TelNo,Name,HouseNo,StreetName,AppartmentSuite,TownCity,State,PostalCode,Country,NewIC,OldIC,PassportNo,BRN,LatitudeDecimal,LongitudeDecimal,ServiceType,IndicatorType,CreateDate,Filler,Cr_Nl,HouseNo_New,LotNo_New,StreetName_New,AptNo_New,BuildingName_New,LowIDRange,HighIDRange,SectionName) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
     try { 
      conn = ds.getConnection(); 
      stmt = conn.prepareStatement(sQuery); 

      int col = 0; 
      for (String field : fields) { 
       stmt.setString(++col, field); // Note: SQL API is 1-based (not zero-based) 
      } 

      int dbStat = stmt.executeUpdate(); 
      conn.close(); 
     } catch (SQLException s){ 
      logger.error(s.getMessage()); 
     } 
     finally { 
      try {if (stmt != null) stmt.close();} catch (SQLException e) {} 
      try {if (conn != null) conn.close();} catch (SQLException e) {} 
     } 
    } 
} 
+0

각 행의 필드가 데이터베이스 테이블의 열에 어떻게 매핑되는지 질문에 설명해 주시겠습니까? –

+1

던져진 예외를 보낼 수 있습니까? 'DATA_999' 테이블에 대한 DDL도 감사합니다. – frm

+1

의 FAQ http://stackoverflow.com/faq –

답변

2

. 또한 SQL 쿼리에서 오류가있는 것처럼 보입니다. 첫 번째 필드가 부재하고 거기에 쉼표 만 있습니다.

나 자신도 아무 것도하지 않는 것처럼 보입니다. 사람들이 당신에게주는 조언을 사용하고 코드를 변경하고 작동하지 않으면 새로운 질문을 만듭니다.

+0

친애하는 Kurt Du Bois, 나는 이미 그것을 바꾼다. 그러나 아직도 일할 수 없다. 다른 생각? – Siti

관련 문제