Java 如何将完整的csv文件加载到表中?
我试图将一个.csv文件上传到一个mysql表中,但目前它只会在movies表中上传1001行电影,而它会遗漏几千行 我尝试将int改为Bigint,以给它更多的空间,因为int最多只能提供4个字符,当csv文件中最多有6或7个字符时,最大的是7220个字符 例如:Java 如何将完整的csv文件加载到表中?,java,mysql,load-data-infile,Java,Mysql,Load Data Infile,我试图将一个.csv文件上传到一个mysql表中,但目前它只会在movies表中上传1001行电影,而它会遗漏几千行 我尝试将int改为Bigint,以给它更多的空间,因为int最多只能提供4个字符,当csv文件中最多有6或7个字符时,最大的是7220个字符 例如: Lines included = 6116,Spice World,4.7,123 5902,A Bridge Too Far,6.9,207 Lines not included: 190955,Blood Ties,6,171
Lines included =
6116,Spice World,4.7,123
5902,A Bridge Too Far,6.9,207
Lines not included:
190955,Blood Ties,6,171
206647,Spectre,6.3,4466
13056,Punisher: War Zone,5.6,294
LAST line loaded:
7220,The Punisher,6.1,766 (LINE 1488)
last line not loaded:
7278,Meet the Spartans,3.7,359 (LINE 1608)
我注意到它达到了一个点(7220),比没有带来任何其他更高的,但包括所有7220和以下
statement.executeUpdate("CREATE TABLE Movies("
+ "id BIGINT, "
+ "title VARCHAR(100), "
+ "vote_average VARCHAR(100), "
+ "vote_count VARCHAR(100), "
+ "PRIMARY KEY(id))" );
String loadQuery = "LOAD DATA LOCAL INFILE '" + "movies.csv"
+ "' INTO TABLE Movies FIELDS TERMINATED BY ',' ENCLOSED BY '\"'\n" +
"LINES TERMINATED BY '\\r\\n'\n" +
"IGNORE 1 LINES";
stmt.execute(loadQuery);//executing the query
更新:记得在MYSQL中选择“无限制”,这解释了为什么SELECT只返回1000行。我没有运行你的代码,但是, 试试这个:
CREATE TABLE discounts(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
expired_date DATE NOT NULL,
amount DECIMAL(10 , 2 ) NULL,
PRIMARY KEY (id)
);
以下折扣.csv文件包含作为列标题的第一行和其他三行数据
以下语句将数据从c:\tmp\discounters.csv文件导入折扣表
LOAD DATA INFILE 'c:/tmp/discounts.csv'
INTO TABLE discounts
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
文件的字段以逗号结尾,逗号由以“”结尾的字段“
”表示,并由“”
”指定的双引号括起
csv文件的每一行都以换行符结尾,换行符由以“\n
”结尾的行表示
由于文件的第一行包含列标题,不应将列标题导入表中,因此我们通过指定ignore1 ROWS
选项来忽略它
现在,我们可以检查折扣表以查看是否导入了数据
SELECT * FROM discounts;
希望这有帮助。最后一行加载了什么,第一行没有加载?我怀疑一些格式/解析问题分隔符中一定有输入错误,或者第7220行中的换行符,您能发布csv的那部分吗?您是否愿意使用任何基于gui的工具进行导入?@arcy添加了last和first此内容不在id 7220的订单根本不是第7220行@Chistos K。