Rumah  >  Soal Jawab  >  teks badan

Cara memasukkan data daripada berbilang senarai bersarang ke dalam berbilang baris dalam pangkalan data menggunakan prosedur tersimpan

<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粉807471604P粉807471604407 hari yang lalu507

membalas semua(1)saya akan balas

  • P粉676588738

    P粉6765887382023-08-15 13:06:06

    创建表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

    balas
    0
  • Batalbalas