私は、次のことを行う Java プログラムを作成しました。設計に関する意見を求めています。
- 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!");
}
}