You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析大型JSON导入Prisma Postgres及更新流程最佳实践咨询

大型JSON解析入库及更新流程问题

我正在开发一个Next.js项目,使用一份约65000行的大型JSON文件作为Prisma + Postgres数据库的数据源,JSON文件结构如下:

[
  {
    "NativeClass": "class-name",
    "Classes": [ // 数据从该类的属性中提取
      {
        "key1": "val1",
        "key2": "val2",
        ...
      },
      {
        ...
      }
    ]
  },
  {
    "NativeClass": "class-name2",
    "Classes": [ // 该类可能被跳过
    ...
  }
]

我只需要保留特定NativeClass对应的Classes数据,其余数据均需丢弃。我的问题分为两部分:

1. 将JSON解析为SQL填充数据库的最佳方式是什么?

我不太熟悉TypeScript,曾考虑先用Python解析文件,但不确定如何将解析后的数据插入数据库;也尝试使用TypeScript的JSON.parse函数编写了如下代码:

type Ingredients = {
  ingredientName: String;
  description: String;
  stackSize: number;
  sinkPoints: number;
  energyValue: number;
  radioactiveDecay: number;
  form: String;
  fluidColor: String;
};

type Recipes = {
  recipeName: String;
  alternateRecipe: Boolean;
  craftedIn: String;
  inCraftBench: Boolean;
  inWorkshop: Boolean;
  craftingTime: number;
  craftingClicks: number;
};

let ingredients : Ingredients[] = [];
let recipes : Recipes[] = [];

var needNext = false;

const file = await fs.readFile(process.cwd() + '/lib/parse/Docs.json', 'utf8');
const data = JSON.parse(file, function(key, value) {
  if (key == "NativeClass" && value == "/Script/CoreUObject.Class'/Script/FactoryGame.FGItemDescriptor'") { 
    needNext = true; // 找到目标类
  }
  if (key == "Classes" && needNext) {
    needNext = false;
    // 需要提取该属性的数据
  }
});

但遇到了与未定义值相关的错误。我了解到使用reviver函数时会先转换内部子元素再处理父元素,因此不知道如何在获知父级类名后提取子元素数据,想请教是否有更优实现方式,或是我对JSON.parse方法的理解有误。

2. JSON文件更新时的解析流程最佳实践

这是我作为软件工程专业学生自学Web开发的副项目,想了解此类场景的最佳实践。该JSON文件极少更新,但更新时需重新解析以同步数据库内容。

内容的提问来源于stack exchange,提问作者Lumi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:18:26