我使用“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”识别为一年不应该吗?
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)";
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);
}
}
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。