我使用“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,短,卡门,卡门,0,1894,0000,1
tt2,简称,Le clown et ses chiens,chiens,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);
}
}
答案 0 :(得分: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。