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

如何使用NodeJS将.sql文件中的SQL语句执行到MySQL数据库

解决方案:使用MySQL官方Node.js驱动(mysql2)执行脚本

SQLite是独立的文件型数据库,和MySQL完全不兼容,所以必须改用MySQL专属的Node.js驱动,推荐用mysql2(性能更好、原生支持Promise)。

步骤1:安装依赖

npm install mysql2

步骤2:编写执行脚本的代码

创建run-migrate.js文件,内容如下:

const fs = require('fs');
const mysql = require('mysql2/promise');

async function executeSqlScript() {
  // 读取SQL文件内容
  const sqlContent = fs.readFileSync('./generated-script.sql', 'utf8');

  // 拆分SQL语句:过滤空行、注释,按分号分割
  const sqlStatements = sqlContent
    .split(';')
    .map(line => line.trim())
    .filter(line => line && !line.startsWith('--'));

  // 建立数据库连接(替换为你的数据库账号信息)
  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'your_db_password',
  });

  try {
    // 逐个执行SQL语句
    for (const stmt of sqlStatements) {
      await connection.execute(stmt);
      console.log(`执行成功:${stmt.length > 60 ? stmt.slice(0, 60) + '...' : stmt}`);
    }
    console.log('\n✅ 所有SQL脚本执行完成!');
  } catch (err) {
    console.error('\n❌ 执行出错:', err.message);
  } finally {
    // 关闭数据库连接
    await connection.end();
  }
}

executeSqlScript();

步骤3:运行脚本

node run-migrate.js

关键说明

  • 脚本中的USE db_test;会自动切换到目标数据库,因此连接时无需指定数据库名称
  • 当前拆分逻辑针对你的DDL脚本足够适用,若后续有包含分号的字符串数据,可调整拆分规则(比如用正则匹配完整语句)
  • 确保数据库用户拥有CREATE SCHEMA、CREATE TABLE等操作权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:48:06