2015-06-18 142 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) 
    });