2015-06-18 202 views

回答

2

没有库简单的方法:

var exec = require('child_process').exec; 
var child = exec(' mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql'); 
+1

假设你已经安装了MySQL客户端工具。 – tier1

+0

我试过使用这个,但生成的sql文件没有内容?这可能是什么原因? –

0
var exec = require('child_process').exec(' mysqldump -u root -p dbname > fileName.sql'); 

这为我工作

0

可以使用由siavolt描述exec方法很简单,但不是“最好的方法”,由所要求题。

如果你关心你的系统内存和CPU和性能,或者你有一个大的数据库,最好和有效的方式是使用spawn以及流,所以这里是我认为的“最好的方式”:

var fs = require('fs'); 
var spawn = require('child_process').spawn; 
var wstream = fs.createWriteStream('dumpfilename.sql'); 

var mysqldump = spawn('mysqldump', [ 
    '-u', 
    'DB_USER', 
    '-p', 
    'DB_PASSWORD', 
    'DB_NAME', 
]); 

mysqldump 
    .stdout 
    .pipe(wstream) 
    .on('finish', function() { 
     console.log('Completed') 
    }) 
    .on('error', function (err) { 
     console.log(err) 
    }); 

如果数据库中没有你可以删除'-p', 'DB_PASSWORD',密码,以便代码将变为:

var fs = require('fs'); 
var spawn = require('child_process').spawn; 
var wstream = fs.createWriteStream('dumpfilename.sql'); 

var mysqldump = spawn('mysqldump', [ 
    '-u', 
    'DB_USER', 
    'DB_NAME', 
]); 

mysqldump 
    .stdout 
    .pipe(wstream) 
    .on('finish', function() { 
     console.log('Completed') 
    }) 
    .on('error', function (err) { 
     console.log(err) 
    });