利用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
相關文章
- 【mysql】資料庫匯出和匯入MySql資料庫
- mysql 資料庫匯入匯出MySql資料庫
- MySQL資料庫匯入匯出MySql資料庫
- 使用Dbeaver 進行資料的匯入和匯出
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- mysqldump匯入匯出mysql資料庫MySql資料庫
- Mysql 資料庫匯入與匯出MySql資料庫
- MySQL資料庫結構和資料的匯出和匯入 (轉)MySql資料庫
- MySQL入門--匯出和匯入資料MySql
- SQL資料庫的匯入和匯出SQL資料庫
- mysql資料匯入匯出MySql
- mysql資料匯出匯入MySql
- 資料庫的匯入匯出資料庫
- Oracle資料庫的匯入和匯出命令Oracle資料庫
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- 匯入和匯出AWR的資料
- BCP 資料的匯入和匯出
- NDS的資料匯入和匯出
- mysql匯入匯出.csv格式資料MySql
- MySQL表資料匯入與匯出MySql
- 通過cmd視窗匯入匯出mysql資料庫MySql資料庫
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- postgresql 資料匯入和匯出SQL
- oracle資料庫匯入匯出命令!Oracle資料庫
- Mysql透過workbench對錶進行匯出匯入MySql
- Oracle資料泵的匯入和匯出Oracle
- Oracle資料庫的常用命令和匯入匯出Oracle資料庫
- MySQL資料匯入匯出牛刀小試MySql
- xml與資料庫中資料的匯入匯出XML資料庫
- 不同版本間的資料庫匯入匯出資料庫
- MySQL系列第四篇:利用MySQL工具之SQLYog進行資料匯入MySql
- plsql developer匯入匯出資料庫方法SQLDeveloper資料庫
- [Docker核心之容器、資料庫檔案的匯入匯出、容器映象的匯入匯出]Docker資料庫
- SQL SERVER 和EXCEL的資料匯入匯出SQLServerExcel
- Java進行excel的匯入匯出操作JavaExcel
- 將informix匯出的文字資料匯入oracle資料庫ORMOracle資料庫
- 【MySQL】白話說MySQL(五),資料的匯出與匯入MySql
- mysql資料庫在不同的伺服器,無法進行資料傳輸,或者匯入匯出資料錯誤,原因分析MySql資料庫伺服器