自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用Java進(jìn)行MySql數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出

開發(fā) 后端 MySQL
利用Java來進(jìn)行Mysql數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出的總體思想是通過Java來調(diào)用命令窗口執(zhí)行相應(yīng)的命令。詳細(xì)請(qǐng)看下文。

利用Java來進(jìn)行Mysql數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出的總體思想是通過Java來調(diào)用命令窗口執(zhí)行相應(yīng)的命令。

MySql導(dǎo)出數(shù)據(jù)庫的命令如下:

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

利用Java調(diào)用命令窗口執(zhí)行命令來進(jìn)行MySql導(dǎo)入數(shù)據(jù)庫一般分三步走:

第一步:登錄Mysql數(shù)據(jù)庫,在登錄數(shù)據(jù)庫的時(shí)候也可以指定登錄到哪個(gè)數(shù)據(jù)庫,如果指定了則可以跳過第二步;

第二步:切換數(shù)據(jù)庫到需要導(dǎo)入的目標(biāo)數(shù)據(jù)庫

第三步:利用命令開始導(dǎo)入

在進(jìn)行導(dǎo)出的時(shí)候,需要注意命令語句的運(yùn)行環(huán)境,如果已經(jīng)將mysql安裝路徑下的bin加入到

系統(tǒng)的path變量中,那么在導(dǎo)出的時(shí)候可以直接使用命令語句,否則,就需要在執(zhí)行命令語句的

時(shí)候加上命令所在位置的路徑,即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.  * 在進(jìn)行導(dǎo)出的時(shí)候,需要注意命令語句的運(yùn)行環(huán)境,如果已經(jīng)將mysql安裝路徑下的bin加入到  
  9.  * 系統(tǒng)的path變量中,那么在導(dǎo)出的時(shí)候可以直接使用命令語句,否則,就需要在執(zhí)行命令語句的  
  10.  * 時(shí)候加上命令所在位置的路徑,即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);//這里簡(jiǎn)單點(diǎn)異常我就直接往上拋  
  21.         MySqlImportAndExport.importSql(properties);  
  22.     }  
  23.       
  24.     /**  
  25.      * 根據(jù)屬性文件的配置導(dǎo)出指定位置的指定數(shù)據(jù)庫到指定位置  
  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);//這里簡(jiǎn)單一點(diǎn)異常我就直接往上拋  
  33.     }  
  34.       
  35.     /**  
  36.      * 根據(jù)屬性文件的配置把指定位置的指定文件內(nèi)容導(dǎo)入到指定的數(shù)據(jù)庫中  
  37.      * 在命令窗口進(jìn)行mysql的數(shù)據(jù)庫導(dǎo)入一般分三步走:  
  38.      * 第一步是登到到mysql; mysql -uusername -ppassword -hhost -Pport -DdatabaseName;如果在登錄的時(shí)候指定了數(shù)據(jù)庫名則會(huì)  
  39.      * 直接轉(zhuǎn)向該數(shù)據(jù)庫,這樣就可以跳過第二步,直接第三步;   
  40.      * 第二步是切換到導(dǎo)入的目標(biāo)數(shù)據(jù)庫;use importDatabaseName;  
  41.      * 第三步是開始從目標(biāo)文件導(dǎo)入數(shù)據(jù)到目標(biāo)數(shù)據(jù)庫;source importPath;  
  42.      * @param properties  
  43.      * @throws IOException   
  44.      */ 
  45.     public static void importSql(Properties properties) throws IOException {  
  46.         Runtime runtime = Runtime.getRuntime();  
  47.         //因?yàn)樵诿畲翱谶M(jìn)行mysql數(shù)據(jù)庫的導(dǎo)入一般分三步走,所以所執(zhí)行的命令將以字符串?dāng)?shù)組的形式出現(xiàn)  
  48.         String cmdarray[] = getImportCommand(properties);//根據(jù)屬性文件的配置獲取數(shù)據(jù)庫導(dǎo)入所需的命令,組成一個(gè)數(shù)組  
  49.         //runtime.exec(cmdarray);//這里也是簡(jiǎn)單的直接拋出異常  
  50.         Process process = runtime.exec(cmdarray[0]);  
  51.         //執(zhí)行了第一條命令以后已經(jīng)登錄到mysql了,所以之后就是利用mysql的命令窗口  
  52.         //進(jìn)程執(zhí)行后面的代碼  
  53.         OutputStream os = process.getOutputStream();  
  54.         OutputStreamWriter writer = new OutputStreamWriter(os);  
  55.         //命令1和命令2要放在一起執(zhí)行  
  56.         writer.write(cmdarray[1] + "\r\n" + cmdarray[2]);  
  57.         writer.flush();  
  58.         writer.close();  
  59.         os.close();  
  60.     }  
  61.       
  62.     /**  
  63.      * 利用屬性文件提供的配置來拼裝命令語句  
  64.      * 在拼裝命令語句的時(shí)候有一點(diǎn)是需要注意的:一般我們?cè)诿畲翱谥苯邮褂妹顏? 
  65.      * 進(jìn)行導(dǎo)出的時(shí)候可以簡(jiǎn)單使用“>”來表示導(dǎo)出到什么地方,即mysqldump -uusername -ppassword databaseName > exportPath,  
  66.      * 但在Java中這樣寫是不行的,它需要你用-r明確的指出導(dǎo)出到什么地方,如:  
  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");//需要導(dǎo)出的數(shù)據(jù)庫名  
  76.         String host = properties.getProperty("jdbc.host");//從哪個(gè)主機(jī)導(dǎo)出數(shù)據(jù)庫,如果沒有指定這個(gè)值,則默認(rèn)取localhost  
  77.         String port = properties.getProperty("jdbc.port");//使用的端口號(hào)  
  78.         String exportPath = properties.getProperty("jdbc.exportPath");//導(dǎo)出路徑  
  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.      * 根據(jù)屬性文件的配置,分三步走獲取從目標(biāo)文件導(dǎo)入數(shù)據(jù)到目標(biāo)數(shù)據(jù)庫所需的命令  
  88.      * 如果在登錄的時(shí)候指定了數(shù)據(jù)庫名則會(huì)  
  89.      * 直接轉(zhuǎn)向該數(shù)據(jù)庫,這樣就可以跳過第二步,直接第三步;   
  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");//導(dǎo)入的目標(biāo)數(shù)據(jù)庫所在的主機(jī)  
  97.         String port = properties.getProperty("jdbc.port");//使用的端口號(hào)  
  98.         String importDatabaseName = properties.getProperty("jdbc.importDatabaseName");//導(dǎo)入的目標(biāo)數(shù)據(jù)庫的名稱  
  99.         String importPath = properties.getProperty("jdbc.importPath");//導(dǎo)入的目標(biāo)文件所在的位置  
  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.         //第二步,獲取切換數(shù)據(jù)庫到目標(biāo)數(shù)據(jù)庫的命令語句  
  104.         String switchCommand = new StringBuffer("use ").append(importDatabaseName).toString();  
  105.         //第三步,獲取導(dǎo)入的命令語句  
  106.         String importCommand = new StringBuffer("source ").append(importPath).toString();  
  107.         //需要返回的命令語句數(shù)組  
  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堆內(nèi)存的10個(gè)要點(diǎn)
  2. Play!在云端:Java PaaS平臺(tái)入門
  3. JavaFX 2.0.3發(fā)布 帶來兩個(gè)全新文檔
  4. Java generic中通配符的幾點(diǎn)理解
  5. Java中泛型創(chuàng)建數(shù)組的總結(jié)

 

責(zé)任編輯:林師授 來源: 234390216的博客
相關(guān)推薦

2011-03-17 13:23:08

數(shù)據(jù)導(dǎo)入導(dǎo)出

2021-11-12 15:42:34

MySQL數(shù)據(jù)庫權(quán)限

2010-06-09 10:09:39

MySQL 數(shù)據(jù)庫導(dǎo)入

2010-06-02 11:34:23

MySQL 數(shù)據(jù)庫導(dǎo)入

2011-04-15 10:37:53

Oracle導(dǎo)入導(dǎo)出語法

2011-04-13 09:03:58

Oracle數(shù)據(jù)庫導(dǎo)入導(dǎo)出

2010-11-09 17:19:49

SQL Server導(dǎo)

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

數(shù)據(jù)庫用戶管理數(shù)據(jù)導(dǎo)入導(dǎo)出

2011-07-27 15:28:10

MySQL數(shù)據(jù)庫字符編碼集

2010-07-21 14:11:36

SQL Server

2010-05-19 15:01:14

MySQL數(shù)據(jù)導(dǎo)入

2010-06-02 12:32:29

MySQL數(shù)據(jù)庫

2010-07-21 14:17:36

SQL Server數(shù)

2011-04-08 10:43:08

mysql數(shù)據(jù)access數(shù)據(jù)庫

2010-10-28 11:55:47

oracle數(shù)據(jù)導(dǎo)出

2018-02-26 20:00:00

編程語言JavaMySQL

2010-05-21 17:51:58

MySQL數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)