成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端 MySQL
利用Java來進行Mysql數據庫的導入和導出的總體思想是通過Java來調用命令窗口執行相應的命令。詳細請看下文。

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

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

  1. mysqldump -uusername -ppassword -hhost -Pport exportDatabaseName > exportPath 

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

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

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

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

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

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

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

基本代碼如下:

  1. import java.io.IOException;  
  2. import java.io.InputStream;  
  3. import java.io.OutputStream;  
  4. import java.io.OutputStreamWriter;  
  5. import java.util.Properties;  
  6.  
  7. /**  
  8.  * 在進行導出的時候,需要注意命令語句的運行環境,如果已經將mysql安裝路徑下的bin加入到  
  9.  * 系統的path變量中,那么在導出的時候可以直接使用命令語句,否則,就需要在執行命令語句的  
  10.  * 時候加上命令所在位置的路徑,即mysql安裝路徑想的bin下的mysqldump命令  
  11.  * @author andy  
  12.  *  
  13.  */ 
  14. public class MySqlImportAndExport {  
  15.  
  16.     public static void main(String args[]) throws IOException {  
  17.         InputStream is = MySqlImportAndExport.class.getClassLoader().getResourceAsStream("jdbc.properties");  
  18.         Properties properties = new Properties();  
  19.         properties.load(is);  
  20. //      MySqlImportAndExport.export(properties);//這里簡單點異常我就直接往上拋  
  21.         MySqlImportAndExport.importSql(properties);  
  22.     }  
  23.       
  24.     /**  
  25.      * 根據屬性文件的配置導出指定位置的指定數據庫到指定位置  
  26.      * @param properties  
  27.      * @throws IOException  
  28.      */ 
  29.     public static void export(Properties properties) throws IOException {  
  30.         Runtime runtime = Runtime.getRuntime();  
  31.         String command = getExportCommand(properties);  
  32.         runtime.exec(command);//這里簡單一點異常我就直接往上拋  
  33.     }  
  34.       
  35.     /**  
  36.      * 根據屬性文件的配置把指定位置的指定文件內容導入到指定的數據庫中  
  37.      * 在命令窗口進行mysql的數據庫導入一般分三步走:  
  38.      * 第一步是登到到mysql; mysql -uusername -ppassword -hhost -Pport -DdatabaseName;如果在登錄的時候指定了數據庫名則會  
  39.      * 直接轉向該數據庫,這樣就可以跳過第二步,直接第三步;   
  40.      * 第二步是切換到導入的目標數據庫;use importDatabaseName;  
  41.      * 第三步是開始從目標文件導入數據到目標數據庫;source importPath;  
  42.      * @param properties  
  43.      * @throws IOException   
  44.      */ 
  45.     public static void importSql(Properties properties) throws IOException {  
  46.         Runtime runtime = Runtime.getRuntime();  
  47.         //因為在命令窗口進行mysql數據庫的導入一般分三步走,所以所執行的命令將以字符串數組的形式出現  
  48.         String cmdarray[] = getImportCommand(properties);//根據屬性文件的配置獲取數據庫導入所需的命令,組成一個數組  
  49.         //runtime.exec(cmdarray);//這里也是簡單的直接拋出異常  
  50.         Process process = runtime.exec(cmdarray[0]);  
  51.         //執行了第一條命令以后已經登錄到mysql了,所以之后就是利用mysql的命令窗口  
  52.         //進程執行后面的代碼  
  53.         OutputStream os = process.getOutputStream();  
  54.         OutputStreamWriter writer = new OutputStreamWriter(os);  
  55.         //命令1和命令2要放在一起執行  
  56.         writer.write(cmdarray[1] + "\r\n" + cmdarray[2]);  
  57.         writer.flush();  
  58.         writer.close();  
  59.         os.close();  
  60.     }  
  61.       
  62.     /**  
  63.      * 利用屬性文件提供的配置來拼裝命令語句  
  64.      * 在拼裝命令語句的時候有一點是需要注意的:一般我們在命令窗口直接使用命令來  
  65.      * 進行導出的時候可以簡單使用“>”來表示導出到什么地方,即mysqldump -uusername -ppassword databaseName > exportPath,  
  66.      * 但在Java中這樣寫是不行的,它需要你用-r明確的指出導出到什么地方,如:  
  67.      * mysqldump -uusername -ppassword databaseName -r exportPath。  
  68.      * @param properties  
  69.      * @return  
  70.      */ 
  71.     private static String getExportCommand(Properties properties) {  
  72.         StringBuffer command = new StringBuffer();  
  73.         String username = properties.getProperty("jdbc.username");//用戶名  
  74.         String password = properties.getProperty("jdbc.password");//用戶密碼  
  75.         String exportDatabaseName = properties.getProperty("jdbc.exportDatabaseName");//需要導出的數據庫名  
  76.         String host = properties.getProperty("jdbc.host");//從哪個主機導出數據庫,如果沒有指定這個值,則默認取localhost  
  77.         String port = properties.getProperty("jdbc.port");//使用的端口號  
  78.         String exportPath = properties.getProperty("jdbc.exportPath");//導出路徑  
  79.           
  80.         //注意哪些地方要空格,哪些不要空格  
  81.         command.append("mysqldump -u").append(username).append(" -p").append(password)//密碼是用的小p,而端口是用的大P。  
  82.         .append(" -h").append(host).append(" -P").append(port).append(" ").append(exportDatabaseName).append(" -r ").append(exportPath);  
  83.         return command.toString();  
  84.     }  
  85.       
  86.     /**  
  87.      * 根據屬性文件的配置,分三步走獲取從目標文件導入數據到目標數據庫所需的命令  
  88.      * 如果在登錄的時候指定了數據庫名則會  
  89.      * 直接轉向該數據庫,這樣就可以跳過第二步,直接第三步;   
  90.      * @param properties  
  91.      * @return  
  92.      */ 
  93.     private static String[] getImportCommand(Properties properties) {  
  94.         String username = properties.getProperty("jdbc.username");//用戶名  
  95.         String password = properties.getProperty("jdbc.password");//密碼  
  96.         String host = properties.getProperty("jdbc.host");//導入的目標數據庫所在的主機  
  97.         String port = properties.getProperty("jdbc.port");//使用的端口號  
  98.         String importDatabaseName = properties.getProperty("jdbc.importDatabaseName");//導入的目標數據庫的名稱  
  99.         String importPath = properties.getProperty("jdbc.importPath");//導入的目標文件所在的位置  
  100.         //第一步,獲取登錄命令語句  
  101.         String loginCommand = new StringBuffer().append("mysql -u").append(username).append(" -p").append(password).append(" -h").append(host)  
  102.         .append(" -P").append(port).toString();  
  103.         //第二步,獲取切換數據庫到目標數據庫的命令語句  
  104.         String switchCommand = new StringBuffer("use ").append(importDatabaseName).toString();  
  105.         //第三步,獲取導入的命令語句  
  106.         String importCommand = new StringBuffer("source ").append(importPath).toString();  
  107.         //需要返回的命令語句數組  
  108.         String[] commands = new String[] {loginCommand, switchCommand, importCommand};  
  109.         return commands;  
  110.     }  
  111.       

上述使用的jdbc.properties文件

  1. jdbc.username=root  
  2. jdbc.password=password 
  3. jdbc.host=localhost  
  4. jdbc.port=3306  
  5. jdbc.exportDatabaseName=dbName  
  6. jdbc.exportPath=d\:\\dbName.sql  
  7. jdbc.importDatabaseName=test  
  8. jdbc.importPath=d\:\\dbName.sql 

原文鏈接:http://haohaoxuexi.iteye.com/blog/1413830

【編輯推薦】

  1. Java堆內存的10個要點
  2. Play!在云端:Java PaaS平臺入門
  3. JavaFX 2.0.3發布 帶來兩個全新文檔
  4. Java generic中通配符的幾點理解
  5. Java中泛型創建數組的總結

 

責任編輯:林師授 來源: 234390216的博客
相關推薦

2011-03-17 13:23:08

數據導入導出

2021-11-12 15:42:34

MySQL數據庫權限

2010-06-09 10:09:39

MySQL 數據庫導入

2010-06-02 11:34:23

MySQL 數據庫導入

2011-04-15 10:37:53

Oracle導入導出語法

2011-04-13 09:03:58

Oracle數據庫導入導出

2010-11-09 17:19:49

SQL Server導

2011-05-13 09:42:21

2011-05-24 09:51:07

MySQLMongoDB

2011-03-21 15:17:35

LAMPMySQL

2009-06-05 11:55:00

數據庫用戶管理數據導入導出

2010-07-21 14:11:36

SQL Server

2011-07-27 15:28:10

MySQL數據庫字符編碼集

2010-06-02 12:32:29

MySQL數據庫

2010-05-19 15:01:14

MySQL數據導入

2010-07-21 14:17:36

SQL Server數

2011-04-08 10:43:08

mysql數據access數據庫

2010-10-28 11:55:47

oracle數據導出

2018-02-26 20:00:00

編程語言JavaMySQL

2016-12-21 14:14:51

SQOOP數據庫HDFS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 老司机精品福利视频 | 韩国成人在线视频 | 国户精品久久久久久久久久久不卡 | 91精品久久久久久久久中文字幕 | 日韩精品中文字幕一区二区三区 | 亚洲国产精品一区二区三区 | 欧美日韩亚洲成人 | 亚洲福利一区二区 | 免费一区二区三区 | 精品美女久久久久久免费 | 91免费观看在线 | 日韩在线看片 | 国产精品一区在线观看你懂的 | 欧美一区二区免费 | 超碰97人人人人人蜜桃 | 国产精品视频一区二区三区不卡 | 91精品国产91久久久久久密臀 | 久久久久久高潮国产精品视 | 日本网站在线看 | 99爱国产| 91九色在线观看 | 日韩在线播放av | 成人免费视频网站在线观看 | 成人欧美一区二区三区黑人孕妇 | 中文字幕亚洲视频 | av网站免费在线观看 | 午夜视频免费在线观看 | 久久综合九九 | 91精品国产一区二区三区 | 欧美在线小视频 | 成人一区二区三区在线观看 | 免费v片在线观看 | 一级大片 | 中文字幕一区二区三区精彩视频 | 黑人中文字幕一区二区三区 | 国产精品日韩欧美一区二区三区 | 日韩视频区 | 国产精品美女久久久 | 午夜亚洲| 日本中文字幕一区 | 伊人99|