nodejs实现数据库备份、清空表、删除表

备份数据库

使用 mysqldump 库,实现数据备份

var path = require('path')
var fs = require('fs')
const mysqldump = require('mysqldump')

const backupsMysql = () => {
  const backupFolder = path.join(__dirname, 'backup')
  if (!fs.existsSync(backupFolder)) {
    fs.mkdirSync(backupFolder)
  }
  const backup_name = new Date().getTime() + '.sql'
  const backupPath = path.join(backupFolder, backup_name)

  const config = {
    connection: {
      host: 'localhost',
      user: 'root',
      password: '123456',
      database: 'you_mysql'
    },
    dumpToFile: backupPath // 设置备份文件路径
  }

  mysqldump(config)
    .then((output) => {
      fs.writeFileSync(config.dumpToFile, output.dump)
      console.log('备份成功')
    })
    .catch((error) => {
      console.error(error) // 会有个报错,但不影响
    })
}

恢复数据 

在控制台输入命令,回车输入密码再回车即可

-D 后面 test_mysql 是数据库名

mysql -uroot -p -Dtest_mysql < F:\backup\backup.sql

定时备份方法

每分钟执行一次;

const cron = require('cron');
const path = require('path')
const fs = require('fs');
const mysqldump = require('mysqldump');

const backupFolder = path.join(__dirname, 'backup')
if (!fs.existsSync(backupFolder)) {
  fs.mkdirSync(backupFolder)
}
const backup_name = new Date().getTime() + '.sql'
const backupPath = path.join(backupFolder, backup_name)

const config = {
  connection: {
      host: 'localhost',
      user: 'root',
      password: '123456',
      database: 'you_mysql'
  },
  dumpToFile: backupPath // 设置备份文件路径
}

const job = new cron.CronJob('0 * * * * *', () => {
    mysqldump(config)
      .then((output) => {
        fs.writeFile(config.dumpToFile, output.dump, (err) => {
            if (err) {
                console.error('Error writing dump to file:', err);
            } else {
                console.log('Database backup successfully saved to file');
            }
        });
      })
      .catch((error) => {
        console.error('Error dumping database:', error);
      });
});

// 手动启动定时任务
job.start();

// 在应用程序关闭时停止定时任务
process.on('exit', () => {
    job.stop();
});

如要修改执行时间,将cron表达式修改为  '0 */5 * * * *' 表示每五分钟执行一次 

清空表数据

使用 mysql 库

const mysql = require('mysql')

const clearMysqlAllTable = () => {
  // 配置数据库连接
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'you_mysql'
  })

  // 连接数据库
  connection.connect()

  // 获取所有表名称的SQL查询
  const getAllTableNamesQuery = `
  SELECT table_name 
  FROM information_schema.tables 
  WHERE table_schema = 'lr_web' 
  AND table_type = 'BASE TABLE';
`

  // 执行查询并清空每个表
  connection.query(getAllTableNamesQuery, (err, results) => {
    if (err) throw err

    const truncateTableQueries = results.map(({ table_name }) => `TRUNCATE TABLE ${table_name}`)

    // 如果你想使用DELETE FROM而不是TRUNCATE TABLE, 可以像这样生成查询:
    // const deleteFromQueries = results.map(({ table_name }) => `DELETE FROM ${table_name}`)

    // 串行执行清空表的查询
    const executeTruncate = (query, callback) => {
      if (query) {
        connection.query(query, (err) => {
          if (err) throw err
          callback()
        })
      } else {
        callback()
      }
    }

    let queryIndex = 0
    const executeNextQuery = () => {
      if (queryIndex < truncateTableQueries.length) {
        executeTruncate(truncateTableQueries[queryIndex++], executeNextQuery)
      } else {
        console.log('操作成功')
        connection.end() // 结束数据库连接
      }
    }

    executeNextQuery() // 开始清空表
  })

  connection.on('end', () => {
    console.log('数据库连接结束')
  })
}

删除所有表

使用 mysql 库

const mysql = require('mysql')

const deleteMysqlAllTable = () => {
  // 配置数据库连接
  const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'you_mysql'
  })

  connection.connect()

  // 执行SQL来获取所有表名
  connection.query('SHOW TABLES', (err, results) => {
    if (err) throw err
    console.log(results)

    // 遍历所有表名,逐个执行删除表的SQL语句
    results.forEach((result) => {
      const tableName = result['Tables_in_' + connection.config.database]
      const dropTableQuery = `DROP TABLE IF EXISTS ${tableName};`

      connection.query(dropTableQuery, (err, result) => {
        if (err) throw err
        console.log(`表 ${tableName} 删除成功`)
      })
    })

    connection.end()
  })
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将数据插入数据库表中,你可以使用 Node.js 的数据库驱动程序来实现。以下是一个示例,演示如何使用 Node.js 将数据插入 MySQL 数据库表: 1. 首先,确保已安装 MySQL 数据库和适当的驱动程序。你可以使用 npm 包管理器安装 mysql 驱动程序: ``` npm install mysql ``` 2. 在你的代码中,导入 mysql 模块,并创建一个数据库连接对象: ```javascript const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', // 数据库服务器地址 user: 'root', // 数据库用户名 password: 'password', // 数据库密码 database: 'mydatabase' // 数据库名称 }); ``` 3. 使用 connect() 方法连接到数据库: ```javascript connection.connect((err) => { if (err) { console.error('Error connecting to database: ' + err.stack); return; } console.log('Connected to database as id ' + connection.threadId); }); ``` 4. 构建 SQL 插入语句,并将数据作为参数传递给 query() 方法执行插入操作。以下示例将一条记录插入名为 `users` 的表: ```javascript const user = { name: 'John', email: 'john@example.com' }; connection.query('INSERT INTO users SET ?', user, (error, results, fields) => { if (error) throw error; console.log('Inserted ' + results.affectedRows + ' row(s).'); }); ``` 这会将包含 `'John'` 和 `'john@example.com'` 的一条记录插入 `users` 表中。 5. 最后,在执行完插入操作后,关闭数据库连接: ```javascript connection.end((err) => { if (err) { console.error('Error closing database: ' + err.stack); return; } console.log('Database connection closed.'); }); ``` 这样,你就可以通过 Node.js 将数据插入数据库表。 问题产生的原因:要将数据插入数据库表,首先需要确保正确安装了数据库和相应的驱动程序。此外,还需要创建数据库连接对象并执行插入操作。 提出一个相关问题:如何处理插入操作中的错误和异常?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值