导出
const childProcess=require('child_process');
const db={
user:'user',
pwd:'pwd',
database:'database',
tables:'table1 table2 table3 table4 ....',
path:'path'
};
let cmd=`mysqldump -u${db.user} -p${db.pwd} ${db.database} ${db.tables} > ${db.path}`;
console.log(cmd);
//执行mysqldump命令
childProcess.exec(cmd,(error, stdout, stderr)=>{
console.log(error);
console.log(stdout);
console.log(stderr);
});
导入
import mysql from 'mysql'
import fs from 'fs'
import path from 'path'
import readline from 'readline'
var options=fs.readFileSync(path.resolve(__dirname,'../data.json'),'utf-8')
options=JSON.parse(options)
var connection = mysql.createConnection({
host: options.host,
port: options.port,
user: options.user,
password: options.pwd
});
function query(sql){
return new Promise((resolve,reject)=>{
connection.query(sql,(err,data)=>{
if(err){
reject(err)
}else{
resolve(data)
}
})
})
}
function read_file(path){
return new Promise((resolve,reject)=>{
var fRead = fs.createReadStream(path);
var objReadline = readline.createInterface({
input:fRead
});
var str='';
var arr = new Array();
objReadline.on('line',function (line) {
if(line.endsWith(';')){
if(str.length!=0){
str+=line;
line=str;
str='';
}
arr.push(line);
}else if(!line.endsWith(';')&&!line.startsWith('--')){
str+=line;
}
});
objReadline.on('close',function () {
resolve(arr);
});
});
}
// 记录执行错误条数,也可自行可记录下那条语句执行出错
let errorNum=0;
// 执行use database;语句,选择要导入的数据库
await query(`use ${arg.db}`);
let data=await read_file('./chars.sql');
for(let i in data){
console.log(data[i]);
try{
if(data[i].endsWith(';')){
data[i]=data[i].slice(0,data[i].length-1);
}
await query(data[i]);
}catch{
errorNum++;
console.log('执行发生错误!');
}
}
if(errorNum>0){
console.log('失败');
}else{
console.log('成功);
}