亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

如何利用Java進行MySql數據庫的導入和導出

添加時間:2012-6-25  添加: admin 

利用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數據庫、導入和導出

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站