JSON数据存入MySQL

前言

👨‍🏫:当我们有这么一串json数据需要我们去存放到数据库时,我们该怎么办?

[{
    "标题": "JavaScript高级程序设计(第4版)",
    "图片": "https://www.ituring.com.cn/img/img-load.020f1e39.png",
    "作者": "[美]马特·弗里斯比(Matt Frisbie)(作者)",
    "translators": "李松峰(译者)"
}, {
    "标题": "Python编程:从入门到实践(第2版)",
    "图片": "https://www.ituring.com.cn/img/img-load.020f1e39.png",
    "作者": "埃里克·马瑟斯(Eric Matthes)(作者)",
    "translators": "袁国忠(译者)"
}]

🙋‍♂️:这还不简单,这么点数据手动添加进去呗🤪
👨‍🏫:确实是可行,但如果我有1k+条数据,那你不就傻眼了吗?
🙋‍♂️:那还有什么办法吗,快快教我。
👨‍🏫:还记得fs模块中读取文件的API——readFile吗?我们可以利用它将数据读取后使用遍历的方式添加到数据库中。

读取文件

👨‍🏫:读取文件有两种方式:

  1. 异步读取——readFile
  2. 同步读取——readFileSync

异步读取readFile

👨‍🏫:同学们注意,由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) )

用法:fs.readFile(filename, [encoding], [callback(err,data)])
错误优先机制,回调函数的第一个参数为错误信息。

接收参数:

  • filename 文件路径
  • options option对象,包含 encoding,编码格式,该项是可选的。
  • callback 回调,传递2个参数 异常err 和 文件内容 data

同步读取readFileSync

用法:fs.readFileSync(path[, options])

接收参数:

  • path 文件路径
  • options option对象,包含 encoding,编码格式,该项是可选的。

👨‍🏫:由于是同步的,所以不需要传回调函数

存入数据库

连接数据库

//导入mysql模块
const mysql = require('mysql');

//创建连接
var cnt = mysql.createConnection({
  host: 'localhost',//域名
  port: '3306',//端口
  user: 'root',//数据库用户名
  password: 'root',//数据库密码
  database: 'test'//数据库名
});

//连接
cnt.connect();

读取文件

//导入fs模块
const fs = require('fs');

//这里的我读取的json文件名为book,将读取到的文件信息保存到data变量中
var data = fs.readFileSync('./book.json');

插入数据到数据库

//由于data目前还是json数据,所以需要将json数据转为对象
data = JSON.parse(data);
//遍历data对象,并且利用sql语句存入数据库
data.forEach((item, index) => {
  var name = item['标题'];
  var bookImg = item['图片'];
  var author = item['作者'];
  var translator = item.translators;

  cnt.query(
    `insert into books (name,bookImg,author,translator) values ('${name}','${bookImg}','${author}','${translator}')`,function(err,data){
      if(err) throw err;
      console.log(data);
    }
  );
});

👨‍🏫:数据库插入语句若不熟悉的同学,可以去翻翻之前的笔记——MySQL 常用语句

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值