需要在数据库所在的服务器执行;
java文件:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
public class ExportDatabase {
String fileLocation = "/opt/apache-tomcat-8.5.23/mysqlDatabase/";//导出文件的位置
String fileName="database.sql";//文件名
String databaseName= "test";//需要导出数据库的数据库名称
String mysqldumpLocation = "/usr/bin/mysqldump";//dump程序所在的位置
Scanner scanner = new Scanner(System.in);
System.out.println("please enter your database account number:");
String user = scanner.next();//输入账号
System.out.println("please enter your database password");
String[] cmds = {"/bin/sh","-c",mysqldumpLocation+" -u"+user+" -p "+databaseName+" > "+fileLocation+fileName};//执行shell脚本
Process pro = Runtime.getRuntime().exec(cmds);
pro.waitFor();//执行到这里会提示输入密码
System.out.println("your file location is on "+fileLocation+" , name is "+fileName);
//执行完毕
}
}
如果是shell脚本导出原理也是差不多
#!/bin/bash
#dump的位置 你需要知道你mysqldump的位置 such as /usr/bin/mysqldump
echo "please enter your dumpLocation:"
read dumpLocation
#需要导出的数据库名称
echo "please enter your databaseName"
read databaseName
#你想要导出的位置 such as /opt
echo "please enter exportLocation"
read exportLocation
#导入文件的名字 基本都是XXX.sql
echo "please enter your file name"
read fileName
#数据库账号
echo "please enter your database account number:"
read user
$dumpLocation -u$user -p $databaseName > $exportLocation"/"$fileName
#执行到这里提示你输入数据库密码
echo "if not error,your shell is success file location is on"$exportLocation" file name is"
$fileName#执行完毕