将数据从csv文件插入表时使用mysql jdbc的数据截断错误

问题描述 投票:1回答:1

我使用“load data local infile”将.csv文件中的数据插入到eclipse中的MySQl数据库表中。但是,我收到如下所示的错误消息。

线程“main”中的异常com.mysql.jdbc.MysqlDataTruncation:数据截断:日期值不正确:第1行第'startYear'列的'1894'

示例数据:tconst_titles,titleType,primaryTitle,originalTitle,isAdult,startYear,endYear,runtimeMinutes

tt1,简称,Carmencita,Carmencita,0.1894,0000,1

tt2,简称,小丑和他的狗,狗,0,1892,0000,5

一个类似的线程提到它与日期值不正确的格式有关。但是,我已经将“startYear”声明为创建表格的日期,它应该将“1894”识别为一年不应该吗?

Code for creating the table:

String sql1 = "CREATE TABLE Titles" +

          "(tconst_titles VARCHAR(255) PRIMARY KEY, " +

          " titleType VARCHAR(255), " + 

          " primaryTitle VARCHAR(255), " + 

          " originalTitle VARCHAR(255), " + 

          " isAdult TINYINT(1), " + 

          " startYear DATE, " + 

          " endYear DATE, " + 

          " runtimeMinutes INT)";

Code for inserting data from .csv file:

import java.sql.*;

public class populate { 

    public static void main(String[] args) throws SQLException {

        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/IMDB","root","user");
        Statement stmt = con.createStatement();
        String sql = 
        "load data local infile 'titles.csv' \n" +
        "   replace \n" +
        "   into table Titles \n" +
        "   columns terminated by '\\t' \n" +
        "   ignore 1 lines";
        stmt.execute(sql);
      }
}
mysql eclipse jdbc
1个回答
1
投票

https://dev.mysql.com/doc/refman/5.7/en/datetime.html说:

DATE类型用于具有日期部分但没有时间部分的值。 MySQL以'YYYY-MM-DD'格式检索并显示DATE值。支持的范围是“1000-01-01”到“9999-12-31”。

您的数据仅为YYYY。这没有月份或日期,因此它不是MySQL所需格式的日期。

如果您只想存储没有月份或日期的年份,请使用YEAR data type(如果您的值在1901 - 2155的支持范围内)。

如果你有其他年份(比如你有1894年),请使用SMALLINT UNSIGNED

© www.soinside.com 2019 - 2024. All rights reserved.