我想从我的 Swing 应用程序中导出数据库 tp 进行备份,我正在谷歌上搜索,与我合作的唯一方法是这样的:
FileWriter fw = null;
String path="C:/Users/mypc/Desktop/tesst/back.sql";
String dumpCommand ="mysqldump -u root --password= gestiondestock > "+path;
// Runtime.getRuntime().exec("mysqldump -u root --password= gestiondestock > "+path);
File data = new File(path);
try{
fw = new FileWriter(data);
fw.close();
}catch(IOException ex){
ex.printStackTrace();
}
Runtime rt = Runtime.getRuntime();
try {
Process proc = rt.exec(dumpCommand);
InputStream in = proc.getInputStream();
InputStreamReader read = new InputStreamReader(in,"latin1");
BufferedReader br = new BufferedReader(read);
BufferedWriter bw = new BufferedWriter(new FileWriter(data,true));
String line=null;
StringBuffer buffer = new StringBuffer();
while ((line=br.readLine())!=null){
buffer.append(line+"\n");
}
String toWrite = buffer.toString();
bw.write(toWrite);
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
但我只得到日期基础信息而不是 creat 表并插入到....
我只得到这些信息:
-- MySQL 转储 10.10
-- 主机:localhost 数据库:gestiondestock
-- 服务器版本 5.1.36-community-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
如何解决这个问题并获取有关 sql 文件的所有信息??,当我尝试在 phpmyadmin 上导出时,我得到了所有信息
dumpCommand 从 cmd 框中手动工作正常
以及导入它的最佳方式!
解决方案
我不能在不运行 shell 的情况下进行重定向,而我在上面没有这样做。所以我必须这样做:
String path="C:/Users/mypc/Desktop/tesst/back.sql";
String dumpCommand = "mysqldump -u root gestiondestock --result-file="+path;
--result-file="+路径