如何以存储过程的方式将多个嵌套列表中的数据插入数据库中的多行
P粉807471604
P粉807471604 2023-08-14 19:11:53
[MySQL讨论组]
<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>
P粉807471604
P粉807471604

全部回复(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 page_name language item_id item_text
1 home fr 1 French text item 1
2 home fr 2 French text item 2
3 home fr 3 French text item 3
4 home fr 4 French text item 4
5 home fr 5 French text item 5

fiddle

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号