我正在尝试将.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行。
答案 0 :(得分:0)
我没有运行您的代码,但是, 试试这个:
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)
);
以下discounts.csv文件包含第一行作为列标题和其他三行数据。
以下语句将数据从c:\ tmp \ discounts.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
'终止的行指示。
由于文件的第一行包含列标题,因此不应将其导入表中,因此我们通过指定IGNORE 1 ROWS
选项将其忽略。
现在,我们可以检查折扣表以查看数据是否已导入。
SELECT * FROM discounts;
希望这会有所帮助。