我要导入的.csv
文件有一个名为DATETIME
的{{1}}列,其行为有点奇怪。 mySQL表中的输出全是test_date
。
它在记事本中显示为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')";
文件的创建或存储方式,因此我的代码可以采取哪些补救措施?
更新:
正如Maurice所建议的,我努力找出如何读取.csv
文件并将其存储到数组中。
原谅我无耻的谷歌搜索技巧,但我已经设法汇集以下内容:
.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
以处理"...", "..."
包含?
答案 0 :(得分:0)
我设法在这里找到了这个问题的答案:MySQL CSV import: datetime value
基本上我的代码没有做的是处理&#34;分离器很好。我所需要的只是重新安排命令,奇怪的是它有效并且有效。
将我的LOAD DATA LOCAL INFILE命令改为以下似乎可以解决问题:
LOAD DATA LOCAL INFILE 'ios_Data.csv'
INTO TABLE ios_import
FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ','
LINES TERMINATED BY '\n'
(test_date)
令我惊讶的是,也不需要使用+"SET test_date = STR_TO_DATE(@var2, '%d/%m/%Y %k:%i')"
。