我写了一个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