【问题标题】:Sequelize Run Script FileSequelize 运行脚本文件
【发布时间】:2020-12-14 14:16:35
【问题描述】:

我有一个项目正在使用Sequelize 来管理一组 MySQL 数据库。到目前为止,我已经能够运行简单的查询来创建新数据库、将参数插入表中并选择数据......但是,我有一个很长的 .sql 文件(+1,700 行),执行时会设置一个具有特定模式的数据库(即表、视图等)。问题是我无法弄清楚如何使用 sequelize 执行这样的脚本。我知道该脚本适用于新数据库,因为我可以从 MySQL Workbench 执行 sql 文件,但是我不知道如何使用 sequelize 从 javascript 文件执行脚本。我搜索了论坛,但似乎也找不到任何资源。这个可以吗?

【问题讨论】:

  • 嗯。感谢您的链接。我会调查一下(尽管它似乎应该比那更容易:)
  • 我不这么认为,SO 中的所有链接都指向那个方向,这只是“最简单的”,没有太多的改变,但它还很年轻

标签: mysql node.js sequelize.js


【解决方案1】:

您可以通过 Sequelize 使用sequelize.query(sql_string) 运行原始查询 并且可以使用fsfs-extra读取sql文件;

请注意,您需要设置多行语句选项 true 才能运行此 sql 文本:

var sql_string = fs.readFileSync('path to file', 'utf8');
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: /* one of 'mysql' | 'mariadb' | 'postgres' | 'mssql' */,
  dialectOptions: {
    multipleStatements: true
  }
});

sequelize.query(sql_string);

编辑 1:

为了更好地理解 Sequelize 类,请查看this

【讨论】:

  • 谢谢。这看起来很有希望。但是,此答案假定数据库已经存在。我正在创建一个新数据库,然后想在新创建的数据库上运行模式脚本。我是否需要创建两个“sequelize”实例,其中一个创建新数据库,然后另一个执行您提供的 sql_string 序列?或者有更清洁的方法吗?
  • 实际上它将运行您的整个 sql 文件,database 只是 Sequelize 的初始配置,您可以跳过它,您可以从头开始构建所有内容,只需连接到您的数据库例如,顺便说一句,我将在几秒钟内更新答案。希望对你有帮助
猜你喜欢
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2016-12-03
  • 2020-03-15
  • 2020-08-19
  • 2020-09-14
相关资源
最近更新 更多