![](/img/trans.png)
[英]Load CSV file to a mysql table using Load data into. How do I convert the following query into JOOQ?
[英]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 文件包含作為列標題的第一行和其他三行數據。
以下語句將數據從 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.