执行mysql转储文件以在nodejs项目

时间:2016-10-07 23:32:41

标签: mysql node.js

我正在研究nodejs项目。我有以下mysql转储文件。而是继续手动创建该表并使用mysql查询手动提供数据,我想执行以下转储文件,该文件将创建表并在该表中提供/插入数据。 如何使用命令执行此操作?

  CREATE TABLE employees (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(50),
    location varchar(50),
    PRIMARY KEY (id)
  ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

  INSERT INTO employees (id, name, location) VALUES
  (1, 'Jasmine', 'Australia'),
  (2, 'Jay', 'India'),
  (3, 'Jim', 'Germany'),
  (4, 'Lesley', 'Scotland');

更新

我想在类似于下面的节点j中使用类似于Ruby on rails

Populating database using seeds.rb

或者在Laravel中here

4 个答案:

答案 0 :(得分:8)

运行SQL脚本的方法是打开一个进程,以SQL脚本作为输入执行mysql命令行客户端。

有些人试图拆分SQL文件,并一次运行一个语句。但这一般不起作用。转储文件中有一些语句(例如DELIMITER)无法针对服务器运行,因为它们是mysql客户端的内置命令。

这是一个过去的Stack Overflow问题,显示了如何使用child_process来生成mysql客户端:

答案 1 :(得分:0)

您可以使用的工具是node-db-migrate,但我不知道这是否适合您的目的。通常,它用于管理数据库迁移,但似乎您可以转储sql文件,它们将被执行。在这里你可以找到documentation。以下是步骤:

npm install db-migrate --save
npm install db-migrate-mysql --save
mkdir migrations

之后,您必须创建一个配置文件来管理不同环境中的数据库连接(模块将查找的默认名称为database.json)。它应该是这样的:

{
  "dev": {
    "host": "localhost",
    "database": "your_db",
    "driver": "mysql",
    "user": "db_user",
    "password": "your_pass"
  },
  "prod": {
    "host": "localhost",
    "database": "your_db",
    "driver": "mysql",
    "user": "db_user",
    "password": "your_pass"
  }
}

之后,您必须创建迁移文件:

node_modules/.bin/db-migrate create employees-seed --sql-file

上面的命令将创建以下文件:

migrations/20161026123242-employees.js
migrations/sqls/20161026123242-employees-up.sql
migrations/sqls/20161026123242-employees-down.sql

您只需要将sql命令转储到sql文件中并运行这样的迁移。 (可能您必须将mysql命令拆分为不同的迁移文件):

node_modules/.bin/db-migrate up

答案 2 :(得分:0)

您可以将转储文件读取到节点中的一个大字符串中,并使用您的mysql驱动程序在单个命令中运行它。司机应该能够处理它。

答案 3 :(得分:0)

似乎已经有一个与MySql集成的NPM模块

查看https://www.sitepoint.com/using-node-mysql-javascript-client/