Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将完整的csv文件加载到表中?_Java_Mysql_Load Data Infile - Fatal编程技术网

Java 如何将完整的csv文件加载到表中?

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

我试图将一个.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
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。