javascript - 使用express js导入sql文件

标签 javascript mysql node.js file express

我正在尝试在express js中导入sql文件。我尝试以下代码,但它不起作用 使用mssql和fs模块时

fs.readFile(__dirname +'/database.sql', function (err, sqlFile) {
        if(err) { throw err; }
        connection.query(sqlFile, function(err, results) {
            if (err) throw err;
            console.log(results); 
          }); 
        console.log(sqlFile);
});

它不起作用,它说 ER_EMPTY_QUERY:查询为空

当我尝试 execsql 模块时。

var execsql = require('execsql'),
dbConfig = {
    host: 'localhost',
    user: 'root',
    password: 'root'
},
sql = 'use db_cam;',
sqlFile = __dirname + '/db.sql';

execsql.config(dbConfig) .exec(sql) .execFile(sqlFile, 函数(错误, 结果){ 控制台.日志(结果); }).end();

它返回ER_ACCESS_DENIED_ERROR

最佳答案

使用 ES6 尝试以下代码:

    import mysql from 'mysql';
    import * as path from 'path';
    import fs from 'fs';

    class DBManager {
      constructor() {
        this.conn = mysql.createConnection({
          host: process.env.DB_HOST,
          user: process.env.DB_USER,
          password: process.env.DB_PASSWORD,
          port: process.env.DB_PORT
        });
        let connection=this.conn;
        this.setCurrentDB(function (data) {
          if (data == 'refused') {
            let queries = fs.readFileSync(path.join(__dirname, 'db_file.sql'), { encoding: "UTF-8" }).split(";\n");
            for (let query of queries) {
              query = query.trim();
              if (query.length !== 0 && !query.match(/\/\*/)) {
                connection.query(query, function (err, sets, fields) {
                  if (err) {
                    console.log(`Importing failed for Mysql Database  - Query:${query}`);
                  } else {
                    console.log(`Importing Mysql Database  - Query:${query}`);
                  }
                });
              }
            }
          } else if (data == 'connected') {
            console.log(`Connected to Mysql Database  `);
          }
        });
        this.conn.connect(function (err) {
          if (err) {
            console.log(`Mysql Database connection error`);
          } else {
            console.log(`Connected to Mysql Database`);
          }
        });
      }

  setCurrentDB(callback) {
    this.conn.query(`USE dbname`, function (err, rows) {
      if (err) {
        if (err.errno == 1049) {
          console.log(`${err.sqlMessage} : Failed to connect MySql database`);
          return callback('refused');
        } else {
          console.log(`Mysql Database connection error`);
          return callback('refused');
        }
      } else {
        return callback('connected');
      }
    });
  }

    }
    export default new DBManager();

关于javascript - 使用express js导入sql文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52982877/

相关文章:

javascript - 需要帮助在提交时重定向表单

node.js - 从 nodejs 使用 akka 的最佳方式是什么

php - 分页在带有 url_suffix 的 codeigniter 2.1.0 中无法正常工作

mysql - 如何在GWT中从FileUpload获取文件

mysql - 在应用 LIMIT 之前如何计算所选行的总数?

javascript - 通过 puppeteer 单击 "load more"按钮

c++ - 在 node.js 绑定(bind)中实现继承

javascript - 创建两个对象 Highslide

javascript - jQuery UI 1.9 Spinner 对话框中断旋转导致死循环

JavaScript if 语句