【问题标题】:How to excute SQL Queries from '.sql' file into MySQL database using NodeJS如何使用 Node JS 将 SQL 查询从 \'.sql\' 文件执行到 MySQL 数据库中
【发布时间】:2022-08-19 17:25:15
【问题描述】:
堆栈和环境

  • 我将NodeJS 用于后端服务器,MySQL 用于存储数据库。
  • 我正在使用MySQL Workbench 来设计数据库模型。
  • 使用 MySQL Workbench,我可以生成一个 \'.sql\' 脚本,其中包含我的数据库模型的所有查询。

如何使用 NodeJS 服务器将生成的 \'.sql\' 脚本执行到 MySQL 数据库中?

非常感谢任何建议,感谢您的帮助:)

generated-script.sql

-- MySQL Workbench Forward Engineering
-- MySQL Script generated by MySQL Workbench

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=\'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\';

-- -----------------------------------------------------
-- Schema db_test
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema db_test
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `db_test` DEFAULT CHARACTER SET utf8 ;
USE `db_test` ;

-- -----------------------------------------------------
-- Table `assessment`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `assessment` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `patient_id` INT NOT NULL,
  `assessment_type` INT NOT NULL,
  `timestamp` DATE NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `assessment_patient_idx` (`patient_id` ASC) VISIBLE,
  INDEX `assessment_type_idx` (`assessment_type` ASC) VISIBLE,
  CONSTRAINT `assessment_patient`
    FOREIGN KEY (`patient_id`)
    REFERENCES `patient` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `assessment_type`
    FOREIGN KEY (`assessment_type`)
    REFERENCES `assessment_type` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `assessment_type`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `assessment_type` (
  `id` INT NOT NULL,
  `label` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `images`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `images` (
  `id` INT NOT NULL,
  `url` VARCHAR(250) NOT NULL,
  `assessment_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `assessment_image_idx` (`assessment_id` ASC) VISIBLE,
  CONSTRAINT `assessment_image`
    FOREIGN KEY (`assessment_id`)
    REFERENCES `assessment` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `patient`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `patient` (
  `id` INT NOT NULL,
  `username` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `username_UNIQUE` (`username` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `user` (
  `id` INT NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `user_notes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `user_notes` (
  `id` INT NOT NULL,
  `user_id` INT NOT NULL,
  `assessment_id` INT NOT NULL,
  `content` VARCHAR(600) NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `user_note_assessment_idx` (`assessment_id` ASC) VISIBLE,
  INDEX `user_note_user_idx` (`user_id` ASC) VISIBLE,
  CONSTRAINT `user_note_user`
    FOREIGN KEY (`user_id`)
    REFERENCES `assessment_type` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `user_note_assessment`
    FOREIGN KEY (`assessment_id`)
    REFERENCES `assessment` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `users_patients`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `users_patients` (
  `id` INT NOT NULL,
  `patient_id` INT NOT NULL,
  `user_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `users_patients_patient_idx` (`patient_id` ASC) VISIBLE,
  INDEX `users_patients_user_idx` (`user_id` ASC) VISIBLE,
  CONSTRAINT `users_patients_patient`
    FOREIGN KEY (`patient_id`)
    REFERENCES `patient` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `users_patients_user`
    FOREIGN KEY (`user_id`)
    REFERENCES `user` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

    标签: mysql node.js database mysql-workbench


    【解决方案1】:

    您可以从文件中读取并对其执行查询:

    const generatedScript = fs.readFileSync(path.join(__dirname, '../generated-script.sql')).toString();
    const query = await db.query(generatedScript,  (err, result) => {
        if (err){
             throw err;
        }else{
            res.send("Query run successfully");
        }
    

    db 配置文件可能如下所示:
    const db = mysql.createConnection({
        host:"-your host here -",
        user:"-your user here-",
        password:"-your password here-",
        database:"-your database here-"
    });
    

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 2018-07-16
      • 2011-06-06
      相关资源
      最近更新 更多