搜索
查看: 4210|回复: 6

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

[复制链接]

47

主题

178

帖子

1176

积分

荣誉会员

Rank: 8Rank: 8

积分
1176
发表于 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. io.open();
  14. io.print(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. io.open();
  14. io.print(result);
复制代码
代码执行完成后,指定数据库没有导入数据,命令行窗口显示 mysql>

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

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

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

回复

使用道具 举报

47

主题

178

帖子

1176

积分

荣誉会员

Rank: 8Rank: 8

积分
1176
 楼主| 发表于 2013-1-25 23:09:24 | 显示全部楼层

导出文件可以用 result-file 这个参数指定备份的文件名, 代码如下[code] import process; strConn = /*--def

导出文件可以用 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

主题

178

帖子

1176

积分

荣誉会员

Rank: 8Rank: 8

积分
1176
 楼主| 发表于 2013-1-25 23:10:50 | 显示全部楼层

[i=s] 本帖最后由 wznjsy 于 2013-1-25 23:21 编辑 [/i] 咦 好像不能自己领赏?

本帖最后由 wznjsy 于 2013-1-25 23:21 编辑

咦 好像不能自己领赏?

点评

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

使用道具 举报

47

主题

178

帖子

1176

积分

荣誉会员

Rank: 8Rank: 8

积分
1176
 楼主| 发表于 2013-1-26 01:40:38 | 显示全部楼层

[quote][size=2][color=#999999]wznjsy 发表于 2013-1-25 23:10[/color] [url=forum.php?

wznjsy 发表于 2013-1-25 23:10
咦 好像不能自己领赏?

应该是回来了。 谢谢啦。
回复

使用道具 举报

8

主题

23

帖子

166

积分

一级会员

Rank: 2

积分
166
发表于 2013-2-20 22:01:07 | 显示全部楼层

[quote][size=2][color=#999999]朴实 发表于 2013-1-25 23:09[/color] [url=forum.php?mod=

朴实 发表于 2013-1-25 23:09
导出文件可以用 result-file 这个参数指定备份的文件名, 代码如下使用的时候需要把数据库的的用户名,密码, ...


请教一下为什么报错呢?
QQ截图20130220215948.png

import process;
strConn = /*--default-character-set=utf8 -u${username} -p${password} --port=${port} ${db} -r ${path}*/
template = string.template( strConn )
strConn = template.format(
    username = "root";
    password = "password";
    port = getMysqlPort();
    db = "db name";
    path = "d:\filename.sql"
)
MysqlFolder ="D:\coreamp\server\mysql-5.1.56\bin"
process.execute("mysqldump.exe",strConn ,,"N",MysqlFolder);
回复

使用道具 举报

7

主题

35

帖子

219

积分

二级会员

Rank: 3Rank: 3

积分
219
QQ
发表于 2016-7-24 21:33:28 | 显示全部楼层

正好需要这个东东,感谢

正好需要这个东东,感谢
回复

使用道具 举报

8

主题

43

帖子

354

积分

培训班

积分
354
发表于 2018-1-11 13:27:03 | 显示全部楼层
感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2018-8-15 10:45 , Processed in 0.078126 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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