내 디자인에 다음과 같은 것이라고 의견을 수행하는 자바 프로그램 작성했습니다 : CSV 파일에서이 데이터베이스 덤프 설계가 정상입니까?
- 읽기 데이터를. 이 파일은 6 개의 열이있는 데이터베이스 덤프입니다.
- MySQL 데이터베이스 테이블에 데이터를 씁니다. 다음과 같이
데이터베이스 테이블은 다음과 같습니다
CREATE TABLE MYTABLE
(
ID int PRIMARY KEY not null auto_increment,
ARTICLEID int,
ATTRIBUTE varchar(20),
VALUE text,
LANGUAGE smallint,
TYPE smallint
);
- 내가 각 행을 저장하는 객체를 만들었습니다.
- OpenCSV를 사용하여 각 행을 1에서 생성 된 개체 목록으로 읽습니다.
- 개체 목록을 반복하고 PreparedStatements를 사용하여 각 행을 데이터베이스에 씁니다.
솔루션은 요구 사항의 변화에 매우 적절해야하며 좋은 접근 방식, 견고성 및 코드 품질을 입증해야합니다.
디자인이 괜찮습니까?
내가 시도한 또 다른 방법은 'LOAD DATA LOCAL INFILE'SQL 문을 사용하는 것이 었습니다. 그게 더 나은 선택일까요?
편집 : 이제 OpenCSV를 사용하고 있으며 실제 필드 안에 쉼표가있는 문제를 처리하고 있습니다. 이제 문제는 DB에 쓰는 것이 아닙니다. 아무도 그 이유를 말할 수 있습니까?
public static void exportDataToDb(List<Object> data) {
Connection conn = connect("jdbc:mysql://localhost:3306/datadb","myuser","password");
try{
PreparedStatement preparedStatement = null;
String query = "INSERT into mytable (ID, X, Y, Z) VALUES(?,?,?,?);";
preparedStatement = conn.prepareStatement(query);
for(Object o : data){
preparedStatement.setString(1, o.getId());
preparedStatement.setString(2, o.getX());
preparedStatement.setString(3, o.getY());
preparedStatement.setString(4, o.getZ());
}
preparedStatement.executeBatch();
}catch (SQLException s){
System.out.println("SQL statement is not executed!");
}
}
바퀴를 다시 한번 재 활성화하십시오. MySQL은 CSV 데이터를 직접 가져올 수 있습니다. http://stackoverflow.com/questions/3025648/import-csv-to-mysql CSV를 데이터베이스로 가져 오기 위해 한 줄의 Java 코드를 설정하는 이유는 없습니다 ... – feeela
@feeela이 작업은 업무용 응용 프로그램입니다. 귀하의 제안으로 인해 코딩 기술을 보여줄 수 없거나 외부 도구에 대해 알고 있다는 것을 보여줄 수 있습니까? – TheCoder
원본 파일의 (대략적인) 예상 크기는 얼마입니까? – RandomSeed