【问题标题】:export and import database mysql from java swing从 java swing 导出和导入数据库 mysql
【发布时间】:2012-08-27 10:30:04
【问题描述】:

我想从我的 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="+路径

【问题讨论】:

  • 您是否手动尝试了该命令?它写了你需要的所有东西吗?问题似乎是您执行的命令,而不是 Java 处理。
  • @gelios 我在 phpmyadmin 上尝试了 cmnnd,我得到了这个:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“mysqldump -u root --password= gestiondestock > C:/Users/mypc/Desktop/testst/ba”附近使用正确的语法
  • 因为该命令是操作系统命令...不是 SQL。在命令行框/终端中尝试。
  • 这就是为什么你使用Runtime类来执行,而不是JDBC连接。
  • @helios 从 cmd 框中手动完成其工作

标签: java mysql jdbc export


【解决方案1】:

mysqldump 命令似乎有问题。而不是这个

mysqldump -u root --password= gestiondestock > path

试试这个,

mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

也可以参考这个链接,

http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/

【讨论】:

  • 我像这样尝试 mysqldump -u root -p[ ] [gestiondestock] > " +path 我没有得到任何文件
  • 试试这个 "mysqldump -u root -pgestiondestock "+databasename+" > " +path
  • 我的数据库没有密码 gestiondestock 是我的数据库的名称
  • 我尝试删除 -p "mysqldump -u root gestiondestock > " +path" 并且我得到了看起来文件
  • 试试这个,Runtime.getRuntime().exec("D:\\mysqldump -hlocalhost -uroot -proot ABC --result-file=D:\\COMP.ccm");参考这个讨论,dreamincode.net/forums/topic/…
猜你喜欢
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多