解析大型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
相关产品推荐
相关产品推荐

