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

如何使用Node.js将JSON数据插入MySQL数据库

嘿,我来帮你梳理如何用Node.js把JSON数据插入MySQL数据库,结合你的现有代码片段一步步拆解,让你能快速上手:

使用Node.js将JSON数据插入MySQL数据库

第一步:确认依赖包已安装

你的代码里用到了mysql、express等工具包,先确保已经通过npm安装:

npm install express mysql flipkart-affiliate moment

第二步:完善数据库连接与插入逻辑

你的代码已经初始化了数据库连接,接下来我们把JSON数据(比如你从flipkart-affiliate获取的优惠信息)插入MySQL的流程拆解清楚:

1. 先确保数据库连接稳定

给连接添加错误处理,避免连接失败后无提示:

var express = require('express');
var app = express();
var affiliate = require('flipkart-affiliate');
var moment = require('moment');
var mysql = require('mysql');

// 数据库连接配置
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'coupontest'
});

// 连接数据库并处理异常
connection.connect(function(err) {
  if (err) {
    console.error('数据库连接失败: ' + err.stack);
    return;
  }
  console.log('已成功连接到数据库,连接ID:' + connection.threadId);
});

2. 处理JSON数据并执行插入

假设你已经从第三方接口拿到了JSON格式的优惠数据(比如代码里的title、description等数组),先确保你的MySQL数据库里有对应的数据表,比如可以先创建这样的表:

CREATE TABLE offers (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  description TEXT,
  start_time DATETIME,
  end_time DATETIME
);

然后编写Node.js插入逻辑,把数组里的JSON数据批量插入到数据库:

// 假设你已经从接口获取到了结构化的优惠数据
var offersData = [];
// 把你的title、description等数组转换成对象数组
for(let i = 0; i < title.length; i++){
  offersData.push({
    title: title[i],
    description: description[i],
    startTime: startTime[i],
    endTime: endTime[i]
  });
}

// 批量插入数据(效率比单条插入高很多)
var insertQuery = 'INSERT INTO offers (title, description, start_time, end_time) VALUES ?';
// 用moment转换时间格式为MySQL支持的格式
var insertValues = offersData.map(item => [
  item.title,
  item.description,
  moment(item.startTime).format('YYYY-MM-DD HH:mm:ss'),
  moment(item.endTime).format('YYYY-MM-DD HH:mm:ss')
]);

connection.query(insertQuery, [insertValues], function(err, result) {
  if (err) {
    console.error('插入数据失败:' + err.message);
    return;
  }
  console.log('成功插入 ' + result.affectedRows + ' 条优惠数据');
});

// 服务器关闭时记得关闭数据库连接
process.on('exit', () => {
  connection.end();
});

3. 结合Express接口接收并插入数据

如果是通过HTTP接口接收外部JSON数据并插入,可以添加Express的JSON解析中间件:

// 解析JSON格式的请求体
app.use(express.json());

// 示例POST接口:接收前端或第三方的JSON数据并插入
app.post('/add-offers', function(req, res) {
  var incomingOffers = req.body;
  if(!Array.isArray(incomingOffers)){
    return res.status(400).send('请求数据必须是数组格式');
  }

  var insertValues = incomingOffers.map(item => [
    item.title,
    item.description,
    moment(item.startTime).format('YYYY-MM-DD HH:mm:ss'),
    moment(item.endTime).format('YYYY-MM-DD HH:mm:ss')
  ]);

  connection.query('INSERT INTO offers (title, description, start_time, end_time) VALUES ?', [insertValues], function(err, result) {
    if (err) {
      res.status(500).send('插入失败:' + err.message);
      return;
    }
    res.send(`成功插入 ${result.affectedRows} 条数据`);
  });
});

// 启动Express服务器
app.listen(3000, () => {
  console.log('服务器运行在 http://localhost:3000');
});

关键注意事项

  • 时间格式兼容:MySQL的时间字段只认特定格式,一定要用moment把JSON里的时间字符串转换成YYYY-MM-DD HH:mm:ss格式。
  • 错误捕获:所有数据库操作都要添加错误处理,不然出现问题很难定位原因。
  • 批量插入优化:数据量较多时,用VALUES ?的批量插入方式,比循环单条插入效率提升数倍。
  • 字段匹配:确保JSON里的字段和MySQL表的字段名、数据类型完全对应,避免插入失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:50:40