Tulis semula tajuk ke: Muat naik ke MySQL menggunakan fail CSV dengan satu lajur yang mengandungi berbilang baris teks, petikan berganda dan koma
P粉469090753
P粉469090753 2023-09-16 10:05:22
0
1
497

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粉469090753
P粉469090753

membalas semua(1)
P粉165522886

Contoh demo.

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:

rrreee

Status 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".
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan