Rumah > Soal Jawab > teks badan
Saya menghadapi masalah memuat naik data ke pangkalan data mysql.
Data kelihatan seperti ini:
review_id, pengguna, teks
Barisan biasa kelihatan seperti ini:
12345,SomeCoolName,"this is my "awsome" comment. some more text, and dome more. and some "more""
Ini sepatutnya menjadi satu baris dalam jadual saya.
Saya menghadapi masalah memuat naik kandungan ini kerana berbilang baris dalam medan teks dan penggunaan koma dan kurungan. Sebarang cadangan tentang cara menangani isu ini?
Terima kasih!
Saya cuba menggunakan beberapa manual yang saya temui tentang memuat naik fail csv ke pangkalan data, tetapi tidak berjaya.
P粉1655228862023-09-17 00:57:56
Sumber kandungan CSV yang mesti diimport:
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.
Jadual data ini mesti diimport ke dalam:
CREATE TABLE test (review_id INT, user VARCHAR(255), review_text TEXT);
Pertanyaan untuk memuatkan data ke dalam jadual:
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
);
Status data jadual selepas dimuatkan:
review_id | Pengguna | teks_semakan |
---|---|---|
123 | John | Ini ialah |
123 | John | Ini berbilang baris 1, |
123 | John | Ini ialah berbilang baris 1, mengandungi koma. |
456 | Jim | Ini ialah |
456 | Jim | Ini adalah miltiline 2 yang mengandungi |
456 | Jim | Ini ialah miltiline 2, yang mengandungi koma, aksara "petikan" dan aksara "petikan berganda". |
Pencairan:
rrreeeStatus data jadual akhir:
review_id | Pengguna | teks_semakan |
---|---|---|
123 | John | Ini ialah berbilang baris 1, mengandungi koma. |
456 | Jim | Ini ialah miltiline 2, yang mengandungi koma, aksara "petikan" dan aksara "petikan berganda". |