【发布时间】:2018-02-28 02:07:22
【问题描述】:
我尝试导入的.csv 文件有一个名为test_date 的DATETIME 列,它的行为有点奇怪。 mySQL表中的输出都是00:00:00 00:00。
它在记事本中显示为"2017-03-25 00:00:01",似乎围绕日期时间值的"" 是这里的关键因素。
问题的真相:
MySQL表对应列的类型为
DATETIME我使用
+"SET test_date = STR_TO_DATE(@var2, '%d/%m/%Y %k:%i')"处理不正确的日期时间格式没有
""存储日期时间列的所有其他.csv文档均已成功导入。-
我在我的 IDE 的 Java 代码上使用了
LOAD DATA LOCAL INFILE命令,如下所示:String loadQuery = "LOAD DATA LOCAL INFILE '" + file + "' INTO TABLE source_data_android_cell CHARACTER SET latin1 FIELDS TERMINATED BY ','" + "ENCLOSED BY '\"'" + " LINES TERMINATED BY '\n' " + "IGNORE 1 LINES(@var1...)" + "SET test_date = STR_TO_DATE(@var1, '%d/%m/%Y %k:%i')";
我无法控制.csv 文件的创建或存储方式,那么我的代码有哪些可能的补救措施?
更新:
按照 Maurice 的建议,我努力找出如何读取 .csv 文件并将其存储到数组中。
请原谅我无耻的谷歌搜索技巧,但我设法收集了以下内容:
public void processCSVFile(String filePath){
try(BufferedReader fileReader = new BufferedReader(new FileReader(new File(filePath)))){
//Create two lists to hold name and height.
List<String> nameList = new ArrayList<>();
List<Integer> heightList = new ArrayList<>();
String eachLine = "";
/*
* Read until you hit end of file.
*/
while((eachLine = fileReader.readLine()) != null){
/*
* As it is CSV file, split each line at ","
*/
String[] nameAndHeightPair = eachLine.split(",");
/*
* Add each item into respective lists.
*/
nameList.add(nameAndHeightPair[0]);
heightList.add(Integer.parseInt(nameAndHeightPair[1]));
}
/*
* If you are very specific, you can convert these
* ArrayList to arrays here.
*/
}catch(IOException e1){
e1.printStackTrace();
}
}
问题是,如何调整代码以处理 .csv 文件,其中信息存储为 "...", "..." 以处理 "" 遏制?
【问题讨论】:
-
当然:逐行读取csv,并插入每一行。
-
啊该死的,我希望避免这样做 =/