数据存在于csv文件中。我使用csvreader读取每一行,然后在数据库中存储相应的值。因此,在读取字符串时,我使用“-”(日期格式类似于01-02-1997)分割日期字符串并存储在数组中,然后交换数组的三个元素并将其存储回数据库。有没有更好的办法。
csv文件中的示例行数据:
10001 MICHELLE VILLEGAS3 Savings SRINATH MICHELLE.VILLEGAS3@NOBODY.COM Y 10-7-18 1050 WEST FIFTH STREET AZUSA IND 917023308
它仅用逗号分隔。
private static void readCsv(String tableName) throws FileNotFoundException, IOException, SQLException {
CSVReader csvreader = null;
try{
Reader reader = Files.newBufferedReader(Paths.get(filePath));
csvreader = new CSVReaderBuilder(reader).withSkipLines(1).build();
sql = "insert into ? values (?,?,?,?,?,?,?,?,?,?,?,?,?)";
ManageDBResource.createConnectionToDB();
pstmt = ManageDBResource.conn.prepareStatement(sql);
pstmt.setString(1, tableName);
String[] rowData = null;
while((rowData = csvreader.readNext()) != null) {
int i = 2;
for (String data : rowData) {
if(i == 8 && data != null && rowData[12] != "IND") {
String[] date = data.split("-");
String temp = date[0];
date[0] = date[1];
date[1] = temp;
}
pstmt.setString(i++,data);
//System.out.print(data + " ");
}
//System.out.println();
}
int result = pstmt.executeUpdate();
if(result == 1) {
System.out.println("Data loaded Successfully.");
}
}
finally {
pstmt.close();
csvreader.close();
}
如何在java程序中准确地使用str\u to\u date()函数。抱歉,我是编程新手,谢谢你的帮助。
3条答案
按热度按时间apeeds0o1#
你可以用
如果解析失败,parse方法将抛出
DateTimeParseException
.所以你可以
2j4z5cfb2#
为什么不用java的
SimpleDateFormat
?例如
或者更好:现代
java.time
应用程序编程接口h6my8fg23#
很简单。从这个问题开始,将列数据(字符串)转换为
java.sql.date
. 现在使用prepared语句的setdate方法将日期传递给insert查询:不用担心mysql将如何存储它。您可以随时查询数据库以获得所需格式的日期值。您使用的工具(如SQLDeveloper等)可以配置为以特定格式显示日期。