将.csv文件插入mysql db Java:DATETIME格式列未成功导入

时间:2017-09-19 10:17:40

标签: java mysql csv datetime

我要导入的.csv文件有一个名为DATETIME的{​​{1}}列,其行为有点奇怪。 mySQL表中的输出全是test_date

它在记事本中显示为00:00:00 00:00,其中围绕日期时间值的"2017-03-25 00:00:01"似乎是此处的关键因素。

问题的事实:

  1. MySQL表的相应列属于""

  2. 类型
  3. 我使用DATETIME来处理错误的日期时间格式

  4. 成功导入日期时间列不带 +"SET test_date = STR_TO_DATE(@var2, '%d/%m/%Y %k:%i')"的所有其他.csv文档。

  5. 我在IDE的Java代码上使用""命令,如下所示:

    LOAD DATA LOCAL INFILE
  6. 我无法控制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以处理"...", "..."包含?

1 个答案:

答案 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')"