我在將資料上傳到 mysql 資料庫時遇到問題。
資料看起來像這樣:
review_id、使用者、文字
典型的行如下所示:
12345,SomeCoolName,"this is my "awsome" comment. some more text, and dome more. and some "more""
這應該是我表格中的一行。
由於文字欄位中有多行以及使用逗號和括號,我在上傳此內容時遇到問題。 關於如何處理這個問題有什麼建議嗎?
謝謝!
我嘗試使用一些我找到的有關將 csv 檔案上傳到資料庫的手冊,但沒有成功。
P粉1655228862023-09-17 00:57:56
必須匯入的來源 CSV 內容:
review_id,user,text 123,John,This is multiline 1, which contains a comma. 456,Jim,This is miltiline 2, which contains commas, 'quote' chars and "double quote" chars.
此資料必須匯入的表:
CREATE TABLE test (review_id INT, user VARCHAR(255), review_text TEXT);
將資料載入到表中的查詢:
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/test.csv'
INTO TABLE test
FIELDS TERMINATED BY 'DELETE t1
FROM test t1
JOIN test t2 USING (user)
WHERE t1.review_text < t2.review_text;
' ENCLOSED BY '' ESCAPED BY ''
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@line)
SET review_id = (@review_id := CASE WHEN @line REGEXP '^\d'
THEN SUBSTRING_INDEX(@line, ',', 1)
ELSE @review_id
END
),
user = (@user := CASE WHEN @line REGEXP '^\d'
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(@line, ',', 2), ',', -1)
ELSE @user
END
),
review_text = (@review_text := CASE WHEN @line REGEXP '^\d'
THEN SUBSTRING(@line FROM 2 + LENGTH(SUBSTRING_INDEX(@line, ',', 2)))
ELSE CONCAT_WS(' ', @review_text, @line)
END
);
載入後表格資料狀態:
review_id | 用戶 | review_text |
---|---|---|
123 | 約翰 | 這是 |
123 | 約翰 | 這是多行 1, |
123 | 約翰 | 這是多行 1,其中包含逗號。 |
456 | 吉姆 | 這是 |
456 | 吉姆 | 這是 miltiline 2,其中包含 |
456 | 吉姆 | 這是 miltiline 2,其中包含逗號、「引號」字元和「雙引號」字元。 |
清算:
rrreee最終表資料狀態:
review_id | 用戶 | review_text |
---|---|---|
123 | 約翰 | 這是多行 1,其中包含逗號。 |
456 | 吉姆 | 這是 miltiline 2,其中包含逗號、「引號」字元和「雙引號」字元。 |