日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出

發布時間:2023/12/4 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用Java來進行Mysql數據庫的導入和導出的總體思想是通過Java來調用命令窗口執行相應的命令。

MySql導出數據庫的命令如下:

mysqldump?-uusername?-ppassword?-hhost?-Pport?exportDatabaseName?>?exportPath

利用Java調用命令窗口執行命令來進行MySql導入數據庫一般分三步走:

第一步:登錄Mysql數據庫,在登錄數據庫的時候也可以指定登錄到哪個數據庫,如果指定了則可以跳過第二步;

第二步:切換數據庫到需要導入的目標數據庫

第三步:利用命令開始導入

在進行導出的時候,需要注意命令語句的運行環境,如果已經將mysql安裝路徑下的bin加入到系統的path變量中,那么在導出的時候可以直接使用命令語句,否則,就需要在執行命令語句的時候加上命令所在位置的路徑,即mysql安裝路徑想的bin下的mysqldump命令。

基本代碼如下:

import?java.io.IOException;

import?java.io.InputStream;

import?java.io.OutputStream;

import?java.io.OutputStreamWriter;

import?java.util.Properties;

/**

*?在進行導出的時候,需要注意命令語句的運行環境,如果已經將mysql安裝路徑下的bin加入到

*?系統的path變量中,那么在導出的時候可以直接使用命令語句,否則,就需要在執行命令語句的

*?時候加上命令所在位置的路徑,即mysql安裝路徑想的bin下的mysqldump命令

*?@author?andy

*

*/

public?class?MySqlImportAndExport?{

public?static?void?main(String?args[])?throws?IOException?{

InputStream?is?=?MySqlImportAndExport.class.getClassLoader().getResourceAsStream("jdbc.properties");

Properties?properties?=?new?Properties();

properties.load(is);

//??????MySqlImportAndExport.export(properties);//這里簡單點異常我就直接往上拋

MySqlImportAndExport.importSql(properties);

}

/**

*?根據屬性文件的配置導出指定位置的指定數據庫到指定位置

*?@param?properties

*?@throws?IOException

*/

public?static?void?export(Properties?properties)?throws?IOException?{

Runtime?runtime?=?Runtime.getRuntime();

String?command?=?getExportCommand(properties);

runtime.exec(command);//這里簡單一點異常我就直接往上拋

}

/**

*?根據屬性文件的配置把指定位置的指定文件內容導入到指定的數據庫中

*?在命令窗口進行mysql的數據庫導入一般分三步走:

*?第一步是登到到mysql;mysql?-uusername?-ppassword?-hhost?-Pport?-DdatabaseName;如果在登錄的時候指定了數據庫名則會

*?直接轉向該數據庫,這樣就可以跳過第二步,直接第三步;

*?第二步是切換到導入的目標數據庫;use?importDatabaseName;

*?第三步是開始從目標文件導入數據到目標數據庫;source?importPath;

*?@param?properties

*?@throws?IOException

*/

public?static?void?importSql(Properties?properties)?throws?IOException?{

Runtime?runtime?=?Runtime.getRuntime();

//因為在命令窗口進行mysql數據庫的導入一般分三步走,所以所執行的命令將以字符串數組的形式出現

String?cmdarray[]?=?getImportCommand(properties);//根據屬性文件的配置獲取數據庫導入所需的命令,組成一個數組

//runtime.exec(cmdarray);//這里也是簡單的直接拋出異常

Process?process?=?runtime.exec(cmdarray[0]);

//執行了第一條命令以后已經登錄到mysql了,所以之后就是利用mysql的命令窗口

//進程執行后面的代碼

OutputStream?os?=?process.getOutputStream();

OutputStreamWriter?writer?=?new?OutputStreamWriter(os);

//命令1和命令2要放在一起執行

writer.write(cmdarray[1]?+?"\r\n"?+?cmdarray[2]);

writer.flush();

writer.close();

os.close();

}

/**

*?利用屬性文件提供的配置來拼裝命令語句

*?在拼裝命令語句的時候有一點是需要注意的:一般我們在命令窗口直接使用命令來

*?進行導出的時候可以簡單使用“>”來表示導出到什么地方,即mysqldump?-uusername?-ppassword?databaseName?>?exportPath,

*?但在Java中這樣寫是不行的,它需要你用-r明確的指出導出到什么地方,如:

*?mysqldump?-uusername?-ppassword?databaseName?-r?exportPath。

*?@param?properties

*?@return

*/

private?static?String?getExportCommand(Properties?properties)?{

StringBuffer?command?=?new?StringBuffer();

String?username?=?properties.getProperty("jdbc.username");//用戶名

String?password?=?properties.getProperty("jdbc.password");//用戶密碼

String?exportDatabaseName?=?properties.getProperty("jdbc.exportDatabaseName");//需要導出的數據庫名

String?host?=?properties.getProperty("jdbc.host");//從哪個主機導出數據庫,如果沒有指定這個值,則默認取localhost

String?port?=?properties.getProperty("jdbc.port");//使用的端口號

String?exportPath?=?properties.getProperty("jdbc.exportPath");//導出路徑

//注意哪些地方要空格,哪些不要空格

command.append("mysqldump?-u").append(username).append("?-p").append(password)//密碼是用的小p,而端口是用的大P。

.append("?-h").append(host).append("?-P").append(port).append("?").append(exportDatabaseName).append("?-r?").append(exportPath);

return?command.toString();

}

/**

*?根據屬性文件的配置,分三步走獲取從目標文件導入數據到目標數據庫所需的命令

*?如果在登錄的時候指定了數據庫名則會

*?直接轉向該數據庫,這樣就可以跳過第二步,直接第三步;

*?@param?properties

*?@return

*/

private?static?String[]?getImportCommand(Properties?properties)?{

String?username?=?properties.getProperty("jdbc.username");//用戶名

String?password?=?properties.getProperty("jdbc.password");//密碼

String?host?=?properties.getProperty("jdbc.host");//導入的目標數據庫所在的主機

String?port?=?properties.getProperty("jdbc.port");//使用的端口號

String?importDatabaseName?=?properties.getProperty("jdbc.importDatabaseName");//導入的目標數據庫的名稱

String?importPath?=?properties.getProperty("jdbc.importPath");//導入的目標文件所在的位置

//第一步,獲取登錄命令語句

String?loginCommand?=?new?StringBuffer().append("mysql?-u").append(username).append("?-p").append(password).append("?-h").append(host)

.append("?-P").append(port).toString();

//第二步,獲取切換數據庫到目標數據庫的命令語句

String?switchCommand?=?new?StringBuffer("use?").append(importDatabaseName).toString();

//第三步,獲取導入的命令語句

String?importCommand?=?new?StringBuffer("source?").append(importPath).toString();

//需要返回的命令語句數組

String[]?commands?=?new?String[]?{loginCommand,?switchCommand,?importCommand};

return?commands;

}

}

上述使用的jdbc.properties文件

jdbc.username=root

jdbc.password=password

jdbc.host=localhost

jdbc.port=3306

jdbc.exportDatabaseName=dbName

jdbc.exportPath=d\:\\dbName.sql

jdbc.importDatabaseName=test

jdbc.importPath=d\:\\dbName.sql

總結

以上是生活随笔為你收集整理的java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。