我寫了一個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,它處理實際字段內有逗號的問題。現在的問題是沒有寫入數據庫。誰能告訴我爲什麼?
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我不明白爲什麼要設置一行Java代碼來將CSV導入到數據庫中... – feeela
@feeela此任務適用於工作申請。你認爲你的建議阻止了我展示自己的編碼技能,還是顯示我知道外部工具? – TheCoder
什麼是您的源文件的(近似)預期大小? – RandomSeed