2017-01-03 1 views
-1

텍스트 파일에 ID 목록이 있습니다. 각 ID를 읽고 DB에서 관련 ID를 검색하고 새 값으로 특정 열을 업데이트해야합니다.텍스트 파일을 읽고 데이터베이스에서 업데이트하기위한 Java 코드

+3

가 SO에 오신 것을 환영합니다. 좋은데 왜 우리에게 말하고있는거야? 제발, [ask]를 보시오. – AxelH

+0

지금까지 저희에게 ur 코드를 보여주십시오. – Abhishek

+0

도와 주실 수없는 어려움을 지정하십시오. 무엇을했는지, 어디서 붙어 있습니까? – yakobom

답변

1

나는 무엇을 할 것인지에 대한 간단한 데모를 제공하려고 노력했습니다.

public class Test { 

private static final String FILENAME = "D:/Idfile.txt"; // Your Id file 

private SessionFactory sessionFactory; 

public static void main(String[] args) { 

    ApplicationContext context = new ClassPathXmlApplicationContext("resource/spring/applicationContext.xml"); 

    Test test = new Test(); 
    test.readFile(); 

} 

private void readFile() { 

    BufferedReader br = null; 
    FileReader fr = null; 

    try { 

     fr = new FileReader(FILENAME); // You read the file here 
     br = new BufferedReader(fr); 

     String sCurrentLine; 

     br = new BufferedReader(new FileReader(FILENAME)); 

     while ((sCurrentLine = br.readLine()) != null) { 
      if (!checkIfIdExists(sCurrentLine)) { 
       System.out.println("Some problem"); // Handle the exception 
                // scenario here. 
      } 
     } 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } finally { 

     try { 

      if (br != null) 
       br.close(); 

      if (fr != null) 
       fr.close(); 

     } catch (IOException ex) { 

      ex.printStackTrace(); 

     } 

    } 

} 



private boolean checkIfIdExists(String sCurrentLine) { 
    Session session = null; 
    Transaction tx = null; 
    try { 
     session = sessionFactory.openSession(); 
     session.setFlushMode(FlushMode.AUTO); 
     tx = session.beginTransaction(); 

     String sql = "SELECT text_file_id, primary_key from demo_table where text_file_id = :text_file_id "; // Check if the ID is present 
     SQLQuery query = session.createSQLQuery(sql); 
     query.addEntity(LookUpDemoTable.class); 
     query.setParameter("text_file_id", sCurrentLine); 
     List results = query.list(); 
     if (results.size() != 0) { 


      for (Iterator<LookUpDemoTable> it = results.iterator(); it.hasNext();) { 

       LookUpDemoTable lookUpDemoTableToUpdate = new LookUpDemoTable(); 
       LookUpDemoTable lookUpDemoTable = it.next(); 
       lookUpDemoTableToUpdate.setPrimaryKey(lookUpDemoTable.getPrimaryKey()); 
       session.saveOrUpdate(lookUpDemoTableToUpdate); // Incase the ID is present 
       tx.commit(); 
      } 

     } else { 
      LookUpDemoTable lookUpDemoTableToInsert = new LookUpDemoTable(); 
      lookUpDemoTableToInsert.setPrimaryKey(new Long(System.currentTimeMillis()).toString()); 
      lookUpDemoTableToInsert.setTextFileId(sCurrentLine); 
      session.save(lookUpDemoTableToInsert); // Incase the ID is not present 
      tx.commit(); 
     } 
     return true; 

    } catch (Exception e) { 
     tx.rollback(); 
    } finally { 
     if (null != session) { 
      session.close(); 
     } 
    } 

    return false; 

    } 
} 

LookUpDemoTable 클래스

@Entity 
@Table(name = "demo_table") 
public class LookUpDemoTable { 

@Id 
@Column(name = "primary_key") 
private String primaryKey; 

@Column(name = "text_file_id") 
private String textFileId; 

public String getPrimaryKey() { 
    return primaryKey; 
} 

public void setPrimaryKey(String primaryKey) { 
    this.primaryKey = primaryKey; 
} 

public String getTextFileId() { 
    return textFileId; 
} 

public void setTextFileId(String textFileId) { 
    this.textFileId = textFileId; 
} 

} 

당신, applicationContext.xml되고 main() 방법에 언급 된 경로, 즉에 넣어 resource/spring/applicationContext.xml

귀하의 applicationContext.xml : 여기

코드입니다 다음과 같이 표시되어야합니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:batch="http://www.springframework.org/schema/batch"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
xsi:schemaLocation="http://www.springframework.org/schema/batch 
    http://www.springframework.org/schema/batch/spring-batch-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/jdbc 
    http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> 

<context:annotation-config /> 
<import resource="database.xml" /> 

<bean id="test" 
    class="Test"> <!-- Your fully qualified class name --> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 
</beans> 

귀하의 database.xml처럼 보일 것입니다 귀하의 DB 정보와 annotatedClasses

귀하의 IdFile로 LookUpDemoTable 클래스에 정의 된 SessionFactory에 콩을 가져야한다 :이 도움이

IDAB12 
IDAC24 
IDAD89 

희망.

당신은이 링크를 참조 할 수 있습니다

How to read a txt file in JAVA

+0

문제에 대한 안내에 도움을 주신 덕분에 – Keerthisairam

+0

은 완전한 출력 세트를 얻으면 출력을 제공합니다. – Keerthisairam

관련 문제