【问题标题】:How do I load my complete csv file into a table?如何将完整的 csv 文件加载到表格中?
【发布时间】:2019-09-05 21:44:58
【问题描述】:

我正在尝试将 .csv 文件上传到 mysql 表中,但目前它只会在电影表中上传 1001 行电影,因为它会遗漏几千行

我尝试将 int 更改为 Bigint 以给它更多空间,因为 int 最多只能提供 4 个字符,最大的是 7220,当它在 csv 文件中达到 6 或 7 个字符时 例如:

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 行。

【问题讨论】:

  • 什么是最后一行加载,第一行没有加载?我怀疑一些格式/解析问题
  • 分隔符一定有错别字,或者第7220行的换行符,能否请你把那部分的csv贴出来?
  • 您愿意使用任何基于 gui 的工具进行导入吗?
  • @arcy 最后和第一个添加
  • 此内容完全不按顺序排列 id 7220 不是第 7220 行 @Chistos K。

标签: java mysql load-data-infile


【解决方案1】:

我没有运行你的代码,但是, 试试这个:

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 文件包含第一行作为列标题和其他三行数据。

discount.csv

以下语句将 c:\tmp\discounts.csv 文件中的数据导入到 discounts 表中。

LOAD DATA INFILE 'c:/tmp/discounts.csv' 
INTO TABLE discounts 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

文件的字段以逗号结尾,字段由“,”终止,并由“"”指定的双引号括起来。

csv 文件的每一行都由 LINES TERMINATED BY '\n' 指示的换行符终止。

由于文件的第一行包含列标题,不应将其导入表中,因此我们通过指定IGNORE 1 ROWS 选项来忽略它。

现在,我们可以查看折扣表,看看数据是否导入。

SELECT * FROM discounts;

table of discount

希望这对您有所帮助。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2021-12-14
    • 2020-06-09
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多