使用java实现sql文件的执行
使用java实现sql文件的执行
使用Java实现导出导入数据库的sql文件
实际原理是利用java中的runtime类来开启操作系统的命令行进程执行导出导入数据库的dos命令来完成的
1.了解相关的导入和导出的dos命令
简单介绍一下MYSQL命令:
mysql->CREATE DATABASE dbname;//创建数据库 mysql->CREATE TABLE tablename;//创建表 mysql->SHOW DATABASES;//显示数据库信息,有那些可用的数据库。 mysql->USE dbname;//选择数据库 mysql->SHOW TABLES;//显示表信息,有那些可用的表 mysql->DESCRIBE tablename;//显示创建的表的信息
从数据库导出数据库文件:
将数据库mydb导出到e:\mysql\mydb.sql文件中:
打开开始->运行->输入cmd 进入命令行模式
c:>mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql
然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。
将数据库mydb中的mytable导出到e:\mysql\mytable.sql文件中:
c:>mysqldump -h localhost -u root -p mydb mytable>e:\mysql\mytable.sql
将数据库mydb的结构导出到e:\mysql\mydb_stru.sql文件中:
c:>mysqldump -h localhost -u root -p mydb –add-drop-table >e:\mysql\mydb_stru.sql
c:>mysqldump -h localhost -u root -p root mydb >e:\mysql\mydb.sql不需要输入密码即可导入,我们一般使用这条dos命令
2. 使用Java导出Sql脚本
a.相关导出的properties配置文件
jdbc.host=127.0.0.1 jdbc.user=root jdbc.password= 输入你要连接的用户对应的密码 jdbc.exportDatabaseName=test jdbc.port=3306 jdbc.exportPath=e:\\mysql\\test.sql
b.导出的方法:
创建ImportProperties类
package com.four; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Properties; public class ImportProperties { //获取配置文件属性 public Map<String, String> proRead(String proName){ Properties pro = new Properties(); Map<String, String> mpro = new HashMap<String, String>(); InputStreamReader isr=null; try { isr = new InputStreamReader(getClass().getResourceAsStream(proName),"UTF-8"); pro.load(isr); //@SuppressWarnings("rawtypes") Enumeration en=pro.propertyNames(); while (en.hasMoreElements()) { String key=(String) en.nextElement(); String value=pro.getProperty(key); mpro.put(key, value); } return mpro; } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return null; } }
创建导出Sql类SqlExport
注意:导出目录需在磁盘存在,否则无法正常导出sql脚本
import java.io.IOException; import java.util.Map; public class SqlExport { //配置文件路径及导出方法的调用 public static void main(String[] args) { ImportProperties importProperties = new ImportProperties(); String proName = "/exportUrl.properties"; Map<String, String> map = importProperties.proRead(proName); exportSql(map); } //导出sql脚本 public static void exportSql(Map<String, String> map){ String user = map.get("jdbc.user"); String password = map.get("jdbc.password"); String host = map.get("jdbc.host"); String exportDatabaseName = map.get("jdbc.exportDatabaseName"); String exportPath = map.get("jdbc.exportPath"); //使用拼接的方式来完成dos命令 String command = new String("cmd /k mysqldump -u"+user+" -p"+password+" "+exportDatabaseName+" >"+exportPath); //执行命令行 Runtime runtime = Runtime.getRuntime(); try { //cmd /k在执行命令后不关掉命令行窗口 cmd /c在执行完命令行后关掉命令行窗口 \\表示转译符也可使用/替代,linux使用/ Process process = runtime.exec(command); } catch (IOException e) { e.printStackTrace(); } } }
直到该步骤即可完成指定的sql文件的导出工作
3. Java调用dos命令完成Sql文件的导入
从外部文件导入数据到数据库中(命令行实现 ):
从e:\mysql\test.sql中将文件中的SQL语句导入数据库中:
1.从命令行进入mysql,然后用命令CREATE DATABASE test2;创建数据库test2。
2.退出mysql 可以输入命令exit;或者quit;
3.在CMD中输入下列命令:
c:>mysql -h localhost -u root -p test2< e:\mysql\test.sql
然后输入密码,就OK了
使用Java代码完成数据库的sql文件导入
导入sql文件的配置文件
jdbc.host=127.0.0.1 jdbc.user=root jdbc.password=15003892179 jdbc.exportDatabaseName=test2 jdbc.port=3306 jdbc.exportPath=e\:\\mysql\\test.sql
创建ImportProperties类
package com.four; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Properties; public class ImportProperties { //获取配置文件属性 public Map<String, String> proRead(String proName){ Properties pro = new Properties(); Map<String, String> mpro = new HashMap<String, String>(); InputStreamReader isr=null; try { isr = new InputStreamReader(getClass().getResourceAsStream(proName),"UTF-8"); pro.load(isr); //@SuppressWarnings("rawtypes") Enumeration en=pro.propertyNames(); while (en.hasMoreElements()) { String key=(String) en.nextElement(); String value=pro.getProperty(key); mpro.put(key, value); } return mpro; } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return null; } }
创建导入Sql文件类
import java.io.IOException; import java.util.Map; public class SqlImport { public static void main(String[] args) { ImportProperties importProperties = new ImportProperties(); String proName = "/importSql.properties"; Map<String, String> map = importProperties.proRead(proName); importSql(map); } public static void importSql(Map<String, String> map){ String user = map.get("jdbc.user"); String password = map.get("jdbc.password"); String host = map.get("jdbc.host"); String exportDatabaseName = map.get("jdbc.exportDatabaseName"); String exportPath = map.get("jdbc.exportPath"); String command = new String("cmd /k mysql"+" -h"+host+" -u"+user+" -p"+password+" "+exportDatabaseName+" <"+exportPath); //执行命令行 Runtime runtime = Runtime.getRuntime(); try { //cmd /k在执行命令后不关掉命令行窗口 cmd /c在执行完命令行后关掉命令行窗口 \\表示转译符也可使用/替代,linux使用/ Process process = runtime.exec(command); System.out.println("导入成功》》》》》》》》》》》》》》》"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
到此为止即可完成sql文件导入mysql数据库的步骤了