簡體   English   中英

如何將完整的 csv 文件加載到表格中?

[英]How do I load my complete csv file into a table?

我正在嘗試將 .csv 文件上傳到 mysql 表中,但目前它只會在電影表中上傳 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 中選擇“NO LIMIT”,這解釋了為什么 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)
);

以下discounts.csv 文件包含作為列標題的第一行和其他三行數據。

折扣.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;

文件的字段以逗號終止,由 Field 終止於 ' , ' 並用雙引號括起來,由 ' " ' 指定。

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

由於文件的第一行包含列標題,不應將其導入表中,因此我們通過指定IGNORE 1 ROWS選項來忽略它。

現在,我們可以檢查折扣表以查看數據是否已導入。

SELECT * FROM discounts;

折扣表

希望這是有幫助的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM