我有一个包含80 000行的csv文件, 每行有:cost; date(123.232; 30/12/2008) 我必须将所有成本数据插入表名作为参数秒中的日期,例如: 123.232成本将在“30/12/2008”表格中排成一行 我有这么多行像这样.. 现在我的程序看起来像: 现在我必须在for循环中声明SQL查询,因为我需要“date”参数,
我的问题 - 如何绘制一个“pStatement = connection.prepareStatement(”INSER ....“与for循环一致的行?获取”date“参数
为什么我需要它? - 因为现在addsBatch不起作用,现在只添加到数据库的最后一行。 如果我将pStatement.executeBatch()移入for循环中 - 那么这将不像批处理添加那样工作,但通常每次添加都是如此。
我正在使用批量添加,因为我需要快速处理我的应用程序。 所有建议都将被通缉
Database database = new Database();
Connection connection = database.GetConnection();
PreparedStatement pStatement = null;
for(int x=0; x<=allRowsInCSVFile.size()-1; x++){
Rows row = allRows.get(x);
pStatement = connection.prepareStatement("INSERT INTO \""+ row.getDate() +"\" (cost) VALUES (?);");
pStatement.setLong(1, row.getCost());
pStatement.addBatch();
}
pStatement.executeBatch();
connection.close();
答案 0 :(得分:2)
我认为你应该将allRowsInCSVFile分成多个列表,每个列表一个日期,然后你可以从循环中抽出准备好的语句(排序)。它不会像你想要的那样,但它会为每个日期批量生产。我认为这将是你必须做的妥协。
答案 1 :(得分:0)
不确定这对社区维基来说有多么好看
Object obj1 = new Object();
PreparedStatement pStatement =
connection.prepareStatement("insert into " + obj1.toString() );
while(true)
{
obj1.setSomeValue
}
答案 2 :(得分:0)
您可以只使用jdbcTemplate.batchUpdate。在此处查看示例:http://www.mkyong.com/spring/spring-jdbctemplate-batchupdate-example/ 这允许您使用不同的sql但仍然批量执行。
使用preparedstatement,您必须将具有相同日期值的所有插入组合在一起,并为每个日期准备不同的语句。