2017-01-03 4 views
-1

У меня есть текстовый файл со списком идентификаторов, я должен прочитать каждый идентификатор в нем и выполнить поиск в БД для соответствующего идентификатора и обновить конкретный столбец с новым значением.Java-код для чтения текстового файла и обновления в базе данных

+3

Добро пожаловать на SO. Хорошо для вас, но почему вы говорите нам? Пожалуйста, см. [Ask] – AxelH

+0

Покажите нам ур код – 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 должен иметь свои данные БДА и SessionFactory компонент, определенные с LookUpDemoTable класса как его annotatedClasses

Вашего IdFile должен выглядеть следующим образом:

IDAB12 
IDAC24 
IDAD89 

Надеется, что это помогает.

Вы также можете обратиться к этой ссылке:

How to read a txt file in JAVA

+0

спасибо за помощь в руководстве меня по вопросу – Keerthisairam

+0

предоставит выход, как только у меня будет полный набор выходных данных – Keerthisairam

Смежные вопросы