aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 13727|回复: 5

process.execute备份MYSQL 数据库和导入SQL 数据

[复制链接]

47

主题

131

回帖

1167

积分

荣誉会员

积分
1167
发表于 2012-12-30 00:37:48 | 显示全部楼层 |阅读模式
本帖最后由 wznjsy 于 2013-1-25 23:12 编辑

想尝试在aardio中写代码备份MYSQL 数据库,和导入SQL 文件。

我有尝试用以下的代码来解决这个问题, 但是没有解决问题,命令行窗口提示MYSQLDUMP:Couldn't find table ">d:\\aau.sql"
import process;
process.execute("D:\mysql\bin\mysqldump.exe","-uroot -ppwd database >d:\\aau.sql")
初步判断是命令行参数传值不成功,我有用其他简单参数传值 有得到验证成功。估计>d:\\aau.sql  这样表示备份的参数无法正确传值过去。

导入SQL 文件的错误代码是
process.execute("D:\mysql\bin\mysqlimport.exe","-uroot -ppwd database d:\\aau.sql")
显示错误 Error: Table 'database.aau' doesn't exist when using table: database

------------------------------
针对备份数据,我还有尝试用管道把能执行的代码放进去,也不能运行。
  1. import process.popen;

  2. //打开命令行,隐藏命令行窗口
  3. procs=process.popen("cmd.exe","/max")

  4. cmd = /*
  5. D:
  6. cd D:\mysql\bin
  7. mysqldump.exe  -uroot -ppwd database >d:\\aau.sql
  8. */

  9. procs.write(cmd);
  10. result = procs.peekTo("l");
  11. procs.write("exit\n");
  12. //显示结果
  13. import console;
  14. console.log(result);
复制代码
这个代码执行后,命令行窗口会快速闪过数据库的数据,但是在指定的位置产生的数据文件是空的。
-----------------------------------
针对导入数据我也有尝试用管道:
  1. import process.popen;

  2. //打开命令行,隐藏命令行窗口
  3. procs=process.popen("cmd.exe","/max")

  4. cmd = /*
  5. D:
  6. cd D:\xampp\mysql\bin
  7. mysql.exe  -uroot -ppwd database <d:\\aau.sql

  8. */

  9. procs.write(cmd);
  10. result = procs.peekTo("l");
  11. procs.write("exit\n");
  12. //显示结果
  13. import console;
  14. console.log(result);
复制代码
代码执行完成后,指定数据库没有导入数据,命令行窗口显示 mysql>

这个代码工作量比较大,不管能不能得到解决,先谢谢大家了。

参考资料:
http://www.21andy.com/blog/20071102/655.html
http://dev.mysql.com/doc/refman/ ... ption_mysqldump_tab

最理想的情况是可以不显示黑乎乎的窗口的执行过程。先谢谢了。

47

主题

131

回帖

1167

积分

荣誉会员

积分
1167
 楼主| 发表于 2013-1-25 23:09:24 | 显示全部楼层
导出文件可以用 result-file 这个参数指定备份的文件名, 代码如下

  1. import process;
  2. strConn = /*--default-character-set=utf8 -u${username} -p${password} --port=${port} ${db} -r ${path}*/
  3. template = string.template( strConn )
  4. strConn = template.format(
  5.     username = "root";
  6.     password = "password";
  7.     port = getMysqlPort();
  8.     db = "db name";
  9.     path = "d:\filename.sql"
  10. )
  11. MysqlFolder ="D:\coreamp\server\mysql-5.1.56\bin"
  12. process.execute("mysqldump.exe",strConn ,,"N",MysqlFolder);
复制代码
使用的时候需要把数据库的的用户名,密码,备份的数据库名称, MysqlFolder 的变量设置成为mysqldump.exe 所在的文件夹。

还原的话,可以生成BAT 文件,然后用process.execute 执行这个BAT 文件就可以了。还原数据库的BAT 网上很多,这里就不列举了。

嗯。问题解决了,把代码放这里分享下。

47

主题

131

回帖

1167

积分

荣誉会员

积分
1167
 楼主| 发表于 2013-1-25 23:10:50 | 显示全部楼层
本帖最后由 wznjsy 于 2013-1-25 23:21 编辑

咦 好像不能自己领赏?

点评

我帮你取消了悬赏,不知道分返回给你没有  发表于 2013-1-25 23:41

47

主题

131

回帖

1167

积分

荣誉会员

积分
1167
 楼主| 发表于 2013-1-26 01:40:38 | 显示全部楼层
wznjsy 发表于 2013-1-25 23:10
咦 好像不能自己领赏?

应该是回来了。 谢谢啦。

7

主题

28

回帖

219

积分

二级会员

积分
219
QQ
发表于 2016-7-24 21:33:28 | 显示全部楼层
正好需要这个东东,感谢

8

主题

32

回帖

384

积分

培训班

积分
384
发表于 2018-1-11 13:27:03 | 显示全部楼层
感谢分享!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-2-10 18:45 , Processed in 0.070290 second(s), 27 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表