![](/img/trans.png)
[英]Inserting .csv file into mysql db Java: DATETIME format column not imported successfully
[英]Parsing and converting Datetime format from csv file to mysql in Java
我有一個csv文件,其中Datetime列以“DD-MM-YYYY HH:MM”格式定義。 但問題是MySQL只接受Datetime類型為“YYYY-MM-DD HH:MM”。 我想將csv文件中給出的格式轉換為MySQL定義的格式,但我無法做到。我試圖在excel中轉換格式,但首先在excel中沒有日期時間格式,如果我將列拆分為2它改變了我的文件的結構,因此無法插入數據庫。因此,唯一的選擇是使用Java程序並在插入之前更改格式。 有人能在這方面給我一些幫助嗎?
這是我的類,它被調用轉換格式,但我不知道這里有什么問題,是否足夠或我遺漏了什么。(這個類是從另一個程序訪問的。)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class DateUtil {
// List of all date formats that we want to parse.
// Add your own format here.
private static List<SimpleDateFormat>
dateFormats = new ArrayList<SimpleDateFormat>() {
private static final long serialVersionUID = 1L;
{
// add(new SimpleDateFormat("M/dd/yyyy"));
// add(new SimpleDateFormat("dd.M.yyyy"));
// add(new SimpleDateFormat("M/dd/yyyy hh:mm:ss a"));
// add(new SimpleDateFormat("dd.M.yyyy hh:mm:ss a"));
// add(new SimpleDateFormat("dd.MMM.yyyy"));
add(new SimpleDateFormat("dd-MM-yyyy hh:mm"));
add(new SimpleDateFormat("yyyy-MM-dd hh:mm"));
}
};
/**
* Convert String with various formats into java.util.Date
*
* @param input
* Date as a string
* @return java.util.Date object if input string is parsed
* successfully else returns null
*/
public static Date convertToDate(String input) {
Date date = null;
if(input == null ) {
return null;
}
for (SimpleDateFormat format : dateFormats) {
try {
format.setLenient(false);
date = format.parse(input);
} catch (ParseException e) {
//Shhh.. try other formats
}
if (date != null) {
break;
}
}
return date;
}
}
如果我理解正確,你有一個帶有日期列的csv文件,但以“DD-MM-YYYY HH:MM”格式存儲為String,你希望它被格式化為“YYYY-MM-DD HH:MM”讓mySql開心
如果是的話,為什么不用excel來完成這項工作:
在文件中添加新列,例如:
日期DD-MM-YYYY HH:MM | 日期YYYY-MM-DD HH:MM
01-02-2013 23:59 | 2013-02-01 23:59
新添加的列將具有此公式“= MID(A2,7,4)&” - “&MID(A2,4,2)&” - “&LEFT(A2,2)&”“&Right(A2,5)”
現在,您的新列將日期存儲為所需格式的字符串,只需將列復制到記事本,然后從記事本復制回粘貼到第一列
刪除新的(第二個)列並再次將文件另存為csv。
這是一個如何通過SimpleDateFormat
類更改格式的示例。
public static String dateConvert(String origFormat) throws ParseException {
SimpleDateFormat origDateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm");
SimpleDateFormat newDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Date retrivedDate = origDateFormat.parse(origFormat);
return newDateFormat.format(retrivedDate);
}
看一下SimpleDateFormat
類 - 您可以使用它來將傳入的文本解析為Date。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.