java命令行导出、导入sql文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java命令⾏导出、导⼊sql⽂件
1 @IocBean
2public class SqlCommandModel{
3
4//⽤户名
5 @Inject("java:$conf.get('ername')")
6private String username;
7//⽤户密码
8 @Inject("java:$conf.get('jdbc.password')")
9private String password;
10//从哪个主机导出数据库,如果没有指定这个值,则默认取localhost
11 @Inject("java:$conf.get('jdbc.host')")
12private String host;
13//使⽤的端⼝号
14 @Inject("java:$conf.get('jdbc.port')")
15private String port;
16// 路径是mysql中 bin ⽂件的位置
17 @Inject("java:$conf.get('mysqlPath')")
18private String mysqlPath;
19
20// 导出数据库名称
21 @Inject("java:$conf.get('jdbc.exportDatabaseName')")
22private String exportMysqlDataBase;
23
24// 导⼊数据库名称
25 @Inject("java:$conf.get('jdbc.importDatabaseName')")
26private String importDataBase;
27
28
29// # ⽤户名
30// ername=root
31// # 数据库密码
32// jdbc.password=123456
33// # localhost
34// jdbc.host=127.0.0.1
35// # 端⼝号
36// jdbc.port=3306
37// # mysql下的bin⽂件的路径 (linux)
38// mysqlPath=usr/local/mysql/bin
39//
40// # 要导出的数据库名称
41// jdbc.exportDatabaseName=bankmanaer
42// # 要导⼊的⽬标数据库
43// jdbc.importDatabaseName=bankmanaer
44
45
46/**
47 * 获取导出命令
48 * @param exportDatabaseName 表名称
49 * @param exportPath 导出路径
50 * @return
51*/
52public String getExportCommand(String exportDataTableName,String exportPath) {
53
54 StringBuffer command = new StringBuffer();
55//注意哪些地⽅要空格,哪些不要空格
56 command.append("mysqldump -u ").append(username).append(" -p").append(password)//密码是⽤的⼩p,⽽端⼝是⽤的⼤P。

57 .append(" -h").append(host).append(" -P").append(port).append(" ").append(exportMysqlDataBase + " ").append(exportDataTableName).append(" -r ").append(exportPath); 58
59// 如果是linux系统上则加上数据库路径
60// command.append(mysqlPath).append("mysqldump -u ").append(username).append(" -p").append(password)//密码是⽤的⼩p,⽽端⼝是⽤的⼤P。

61// .append(" -h").append(host).append(" -P").append(port).append(" ").append(exportMysqlDataBase + " ").append(exportDataTableName).append(" -r ").append(exportPath); 62
63return command.toString();
64 }
65
66
67// 得到导⼊数据库的命令
68// 得到导⼊数据的命令⾏语句
69/**
70 *
71 * @param importPath 导⼊⽂件所在路径
72 * @return
73*/
74public String[] getImportCommand(String importPath) {
75
76//第⼀步,获取登录命令语句
77 String loginCommand = new StringBuffer().append("mysql -h").append(host).append(" -u ").append(username).append(" -p").append(password)
78 .append(" -P").append(port).toString();
79//第⼆步,获取切换数据库到⽬标数据库的命令语句
80 String switchCommand = new StringBuffer().append("use ").append(importDataBase).toString();
81//第三步,获取导⼊的命令语句
82 String importCommand = new StringBuffer(" source ").append(importPath).toString();
83//需要返回的命令语句数组
84
85 String[] commands = new String[] {loginCommand, switchCommand, importCommand};
86
87return commands;
88 }
89
90
91
92public static void main(String[] args) throws InterruptedException, IOException {
93
94 SqlCommandModel sqlCommandModel = new SqlCommandModel();
95
96 String[] tables = new String[5];
97
98// 这⾥其实是在命令窗⼝中执⾏的 command 命令⾏
99 List<Process> list = new ArrayList<>();
100for (int i = 0; i < tables.length; i++) {
101 String exportCommand = sqlCommandModel.getExportCommand(tables[i], "D:\\" + tables[i] + ".sql"); 102 Runtime runtime = Runtime.getRuntime();
103// 这⾥其实是在命令窗⼝中执⾏的 command 命令⾏
104 list.add(runtime.exec(exportCommand));
105 }
106//等待所有⼦进程处理完毕
107for (Process process : list) {
108while(process.waitFor() != 0){
109 ;
110 }
111 }
112
113 }
114
115 }。

相关文档
最新文档