gpt4 book ai didi

mysql - 将 JSON 数据逐行插入 SQL 表中

转载 作者:行者123 更新时间:2023-12-03 17:22:56 26 4
gpt4 key购买 nike

我有一个 JSON 文件,它存储有关一堆食谱的信息,如 cooking 、时间、成分、说明等。我应该将所有数据传输到带有相关标题的 MySQL 表中。
“配料”和“说明”的存储方式如下:
enter image description here
enter image description here
说明和成分有几个“行”,以列表形式存储。
我们如何将成分和指令以逐行格式存储在 MySQL 表中?
就像是:
说明
安装1
安装2
..
JSON 文件是使用美丽的汤模块使用 python 程序创建的。
PS:我对 SQL 和 JSON 都很陌生,所以很遗憾,我在“我尝试过的”下没有任何东西可以显示......任何帮助将不胜感激。

最佳答案

我不会给你确切的答案,而是给你我用来确定数据库结构的过程。您正在使用关系数据库,所以这就是我要讨论的内容。有一个命名约定也很好,我在这里使用了 CamelCase,但你可以做任何你想做的事情。
您提到您使用的是 python,但这个答案与语言无关。
您选择了一个相当复杂的示例,但我假设您了解如何创建表并使用主键和外键。如果没有,也许你应该做一些更简单的事情。
第 1 步 - 弄清楚实体是什么
这些是需要表示为数据库表的真实实体。在这种情况下,我看到了 4 个实体;

  • 食谱
  • 关键字
  • 成分
  • 使用说明

  • 这些中的每一个都可以在 MySql 中有一个表。给他们一个遵循命名约定的主键。
    第 2 步 - 找出关系
    看起来关键字在多个食谱之间共享,所以你会有多对多的关系——这意味着会有一个额外的表,
  • 食谱关键字

  • 这只是配方和关键字之间的链接,以避免冗余。它有两个外键,RecipeId 和 KeywordId。目前它只是一个愚蠢的对象。在像这样的其他情况下,应用程序需要有关连接的信息是很常见的——例如,谁将这两个东西链接在一起(考虑用户、权限和一个连接表,其中包含有关谁授予权限的信息)
    其他实体是一对多的——每个都需要一个外键,RecipeId
    第 3 步 - 设计每张 table
    除了有多个列表之外,您的 Recipe 对象还有一些属性。这些可以在它的表中。它们中的大多数是数据中的字符串,尽管有更好的方法来存储我们可以保持简单的东西。
    其他实体只有一个文本字段,从您的屏幕截图中,只有配方有属性。
    对于此系统,您需要首先插入所有 Recipe 和 Keyword 对象。在关系数据库中有一种常见的模式,即插入一条记录并获取其 ID,以便您可以插入更多引用它的内容。
    第 4 步 - 找到一个 python mysql 库
    我不知道,但谷歌会帮你找到它。文档应包括查询的基础知识。
    第 5 步 - 插入您的数据
    这是一些伪代码
        FOR EACH recipe
    INSERT the recipe, and get its ID
    FOR EACH keyword
    IF the keyword does not exist already
    INSERT the new keyword and get its ID

    INSERT a record into RecipeKeyword with RecipeId and KeywordId

    FOR EACH ingredient
    INSERT the ingredient, give it RecipeId as a foreign key

    FOR EACH instruction
    INSERT the instruction, give it RecipeId as a foreign key



    就是这样。从这里您可以使用连接进行选择 - 要形成我们在上面看到的内容,您可能需要执行 3 个单独的查询并将它们合并到 python 端的记录对象中以重现原始结构。

    关于mysql - 将 JSON 数据逐行插入 SQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65642918/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com