Cara memasukkan data daripada berbilang senarai bersarang ke dalam berbilang baris dalam pangkalan data menggunakan prosedur tersimpan
P粉807471604
P粉807471604 2023-08-14 19:11:53
0
1
584
<p>Saya mempunyai jadual pangkalan data MySql seperti yang ditunjukkan di bawah: </p> <h2>id |. nama_halaman |. <p>Jadual ini menyimpan teks berasaskan bahasa yang digunakan untuk pelbagai halaman dalam aplikasi web. Saya telah menterjemah teks untuk berbilang bahasa dan berbilang halaman, disimpan dalam fail JSON dalam format berikut: </p> <pre class="brush:php;toolbar:false;">[ ["home","fr",1,"Item teks bahasa Perancis 1"] ["home","fr",2,"Item teks bahasa Perancis 2"] ["home","fr",3,"Item teks bahasa Perancis 3"] ["home","fr",4,"Item teks bahasa Perancis 4"] ["home","fr",5,"Item teks bahasa Perancis 5"] ]</pre> <p>Setiap dokumen JSON mengandungi data untuk bahasa tertentu dan halaman web tertentu. </p> <p>Saya mempunyai banyak data untuk dimasukkan dan saya cuba mencari cara yang cekap untuk menambah data ini pada pangkalan data saya. Saya mengandaikan menggunakan prosedur tersimpan adalah cara terbaik, tetapi saya tidak dapat mencari sebarang tutorial yang meliputi gelung melalui tatasusunan seperti ini dan memasukkan. </p> <p>Adakah mungkin untuk menghantar tatasusunan sedemikian kepada prosedur tersimpan dan menggelungkannya, memasukkan baris demi baris? </p> <p>Sebarang bantuan amat kami hargai. </p>
P粉807471604
P粉807471604

membalas semua(1)
P粉676588738
创建表test (id INT AUTO_INCREMENT PRIMARY KEY,
                   page_name VARCHAR(64),
                   language CHAR(2),
                   item_id INT,
                   item_text VARCHAR(255)
                   );
SET @data := '
[
    ["home","fr",1,"French text item 1"],
    ["home","fr",2,"French text item 2"],
    ["home","fr",3,"French text item 3"],
    ["home","fr",4,"French text item 4"],
    ["home","fr",5,"French text item 5"]
]
  ';
INSERT INTO test (page_name, language, item_id, item_text)
SELECT page_name, language, item_id, item_text
FROM JSON_TABLE(@data,
                '$[*]' COLUMNS ( page_name VARCHAR(64) PATH '$[0]',
                                 language CHAR(2) PATH '$[1]',
                                 item_id INT PATH '$[2]',
                                 item_text VARCHAR(255) PATH '$[3]'                                    
                                )
                ) jsontable;
SELECT * FROM test;
id nama_halaman bahasa item_id item_text
1 rumah fr 1 Item teks bahasa Perancis 1
2 rumah fr 2 Item teks bahasa Perancis 2
3 rumah fr 3 Item teks bahasa Perancis 3
4 rumah fr 4 Item teks bahasa Perancis 4
5 rumah fr 5 Item teks bahasa Perancis 5

fiddle

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan