前几天写了一篇nest+prisma+mysql完成后台增删改查的文章,此时出现一个需求,比如我手里有一份数据,是excel形式。
为了把它做成接口,此时我想在mysql中建一张新表,并且相应字段都加上,然后导入数据,再开始接口的开发工作,整条流程该怎么去做?
此时prisma操作过程中,部分人会出现各种报错,所以为了以防万一,把整套流程写在下面,步骤很少,随取随用!
首先我还是在项目中,定义一个prisma模型,这里在schema.prisma中去写。
对于prisma及nest不了解的宝子,可以去看上一篇文章:
模型此时定义好了,我把图放在下面(注意箭头处,有助于你的定位)
代码放在这里:(一步步跟着走即可)
// 择校表
model getSchool23 {
id Int @id @default(autoincrement())
// id
ids Int
// 招生单位
school String
// 院校特性
characteristics String
// 院系所
Faculties String
// 专业
specialized String
// 研究方向
researchDirection String
// 学习方式
learningStyle String
// 拟招生人数
enrollmentNumber String
// 业务课一
lessonOne String
// 业务课二
lessonTwo String
// 外语
english String
// 政治
politics String
// 所在地
place String
// 专业代码
code String
// 指导老师
teacher String
// 门类
category String
// 一级学科
firstSubject String
// 备注
remarks String
}
定义模型之后,此时要做的就是——生成 Prisma 客户端,在终端中运行以下命令以生成 Prisma 客户端:
npx prisma generate
第三步咱们需要迁移数据库,使用Prisma将你的模型迁移到 MySQL 数据库中,咱们同样在终端输入以下指令:
npx prisma migrate dev --name init
--name init
参数用于为迁移命名,你可以根据需要更改它。
最后一步就是——检查迁移状态
Prisma 将自动为你创建一个迁移文件,并将其应用到你的 MySQL 数据库中。咱们可以通过以下命令检查迁移的状态:
npx prisma migrate status
咱们最后回到navicat刷新一下,可以看到,数据库中的表已经建立好,并且相应字段也都已设置。
放一张图,大家感受一下:
现在这个名叫getSchool23的表,咱们已经建立好,下一步需要做的就是往里导数据!
我会把所有步骤截图放在下面,如果有哪步没操作好,随时评论!
右键打开提示框,咱们选择“导入向导”,如图:
由于我个人这边的数据,是excel形式的,所以直接选就行:(选完直接下一步)
下一步的操作,其实就是选取数据源所在地址,然后选中响应数据,步骤很简单:(做完咱们直接下一步)
对于下一步,我需要解释一下,先看图:
其中“字段名行”指的是,你所有的字段,是在第几行排列的?
一般情况下,数据的第一行都是字段名。
然后从第二行开始,才是数据,所以如箭头所示,咱们选1和2,下一步直接走起!
首先目标字段,是咱们自己填写的,按照你之前的prisma模型,定义的各个字段,和你excel数据里的字段,一一对应上即可,名字可以不同,但自己要知道,哪个是哪个。(做完直接下一步!)
下一步进入到下图页面,咱们直接选择追加数据:(做完直接下一步)
直接点击开始!!!
最后的最后,数据就导入到咱们的mysql里了,该写接口写接口,该写前台写前台,大致就是这样,应该够详细了。
另外,如果你想模拟几条数据,那么同样可以使用prisma往mysql里加数据,形成一种交互,这里给大家一个例子:
这里给大家做个解释,第一步属于prisma固定操作,调用即可
const { PrismaClient } = require('@prisma/client');
第二步属于实例化prisma
const prisma = new PrismaClient();
再往下就是往里插入数据(还是很浅显易懂的)
async function main() {
const newSchool = await prisma.getSchool23.create({
data: {
ids: 1,
school: 'Example School',
characteristics: 'Public',
Faculties: 'Faculty of Science',
specialized: 'Computer Science',
researchDirection: 'Artificial Intelligence',
learningStyle: 'Full-time',
enrollmentNumber: '50',
lessonOne: 'Mathematics',
lessonTwo: 'Computer Programming',
english: 'English',
politics: 'Political Science',
place: 'City A',
code: 'CS001',
teacher: 'Dr. Smith',
category: 'Science',
firstSubject: 'Computer Science',
remarks: 'No remarks',
},
});
console.log('Created new school:', newSchool);
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});
完结撒花!!!下次见!!!