如何以存储过程的方式将多个嵌套列表中的数据插入数据库中的多行
<p>我有一个如下所示的MySql数据库表:</p>
<h2>id | page_name | language | item_id | item_text</h2>
<p>该表存储用于Web应用程序中各个页面的基于语言的文本。我有多种语言和多个页面的翻译文本,以以下格式的JSON文件存储:</p>
<pre class="brush:php;toolbar:false;">[
["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"]
]</pre>
<p>每个JSON文档包含一个特定语言和一个特定网页的数据。</p>
<p>我有大量数据要插入,我正在尝试找到一种有效的方法将这些数据添加到我的数据库中。我假设使用存储过程是最好的方式,但我找不到任何涵盖像这样循环遍历数组并插入的教程。</p>
<p>是否可能将这样的数组传递给存储过程并循环遍历它,逐行插入?</p>
<p>任何帮助将不胜感激。</p>
创建表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;fiddle