mysqldump -h192.168.1.123  -uroot -pdump_user -A  > test.sql
这个语句可以备份msyql的所有数据库问题是现在我想怎么让备份的文件能分开,也就是每个数据库对应一个备份文件我用的bat文件来定时备份的。@echo off
SET "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
md "E:\Backup\Mysql\%Ymd%"
"F:\MySQL5.1\bin\mysqldump" -h192.168.1.123 -uroot -pwd -A > "E:\Backup\Mysql\%Ymd%\mysqldb_bak.sql"pause这个可以不可以把mysqldb改成一个变量,对应每个库名
当然也可以没数据库的写语句
我的库有点多,而且还在不断地增加,这样每次都得修改一下,会相对麻烦。

解决方案 »

  1.   

    set /P .... 然后 使用 %P%
      

  2.   

    SHOW DATABASE;
    用RS.OPEN的方式打开,然后取着每个库的名字,然后写到一起。
      

  3.   

    show databases  可以获取所有数据库名字然后循环生成一个bat语句"F:\MySQL5.1\bin\mysqldump"  -uroot -pwd xx > "E:\Backup\Mysql\%Ymd%\xx_bak.sql"
    "F:\MySQL5.1\bin\mysqldump"  -uroot -pwd oo > "E:\Backup\Mysql\%Ymd%\oo_bak.sql"
    "F:\MySQL5.1\bin\mysqldump"  -uroot -pwd xxoo > "E:\Backup\Mysql\%Ymd%\xxoo_bak.sql"
    .....
    然后再挨着执行就达到我的目的了可是 。bat偶不会写。。只知道思路
      

  4.   

    这个在程序中写,循环生成字符串。然后生成一个BAT,在BAT中执行。
      

  5.   

    用这个自己修改成所需要的吧:
    [code]
    for /f %i in ('mysql -u用户 -p密码 -hIP -N -e "use 库名; show tables";') do mysqldump -u用户 -p密码 -hIP %i > %i.sql
    [/code]
      

  6.   

    用这个自己修改成所需要的吧:
    for /f %i in ('mysql -u用户 -p密码 -hIP -N -e "use 库名; show tables";') do mysqldump -u用户 -p密码 -hIP 数据库名 %i > %i.sql
      

  7.   


    能不能在bat文件里面完成这些,O(∩_∩)O哈哈~
      

  8.   

    呀,看成以表名进行备份了,要以库名的话,用如下的语句吧:
    [code]
    for /f %i in ('mysql -u用户 -p密码 -hIP -N -e "show databases";') do mysqldump -u用户 -p密码 -hIP %i > %i.sql
    [/code]
      

  9.   

    又没有显示出来……
    for /f %i in ('mysql -u用户 -p密码 -hIP -N -e "show databases";') do mysqldump -u用户 -p密码 -hIP %i > %i.sql
    这个就是 bat 语句,可以直接在 bat 中使用。
      

  10.   

    说实在的,我更喜欢 bash,dos 下的 for 之类的用起来很复杂的样子。
      

  11.   


    -N 不显示列名,否则的话,循环时要去掉第一个名字,那就是 show databases 所显示的“Database”
    -e 是直接执行后续的命令如下为对比:不带 -N 参数:+--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    +--------------------+
    带 -N 参数:+--------------------+
    | information_schema |
    +--------------------+
      

  12.   

    @echo off
    echo 现在是 %DATE% %TIME% 
    echo.
    echo MySQL数据库备份
    echo *****************************
    echo.
    SET "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
    md "E:\Backup\Mysql\%Ymd%" for /f %i in ('F:\APMServ5.2.6\MySQL5.1\bin\mysql -h192.57.20.101 -uroot -p123 -N -e " show databases";') 
    do F:\APMServ5.2.6\MySQL5.1\bin\mysqldump -h192.57.20.101 -uroot -p123 %i >"E:\Backup\Mysql\%Ymd%\%i.sql"echo.
    echo MySQL数据库备份完成,请进行检查 
    echo.
    echo.
    pause这个是我修改过得,貌似那里出了点问题,打开都直接关掉了
    没有执行
      

  13.   

    v5 学了不少东西,O(∩_∩)O哈哈~
    300分奉上,在给指点一下。
      

  14.   

    兄台还在不了?帮忙测一下语法,没有写过dos命令。。
      

  15.   

    测试的时候,你不要直接双击 bat 文件,最好是在 cmd 窗口中调用你的 bat,这样如果有错误就会输出在窗口上了。上述语句一个比较明显的错误是你的 do 另起一行了,它应该和 for 的 ) 号在一行的,你改了以后再用上述调试方法看看错误输出是什么。
      

  16.   

    嗯,我也是突然想起来的在cmd窗口搞,是有了不少改动
    现在提示 More?
    这是什么意思
      

  17.   

    提示 More 应该是你的 Pause 的功能了吧 ~~我想起来了,你是用在 bat 中,则需要把 %i 改为 %%i,这个是个特殊的地方,下面的语句我测试通过,你再把 do 后面的内容改掉就行了:@echo off
    echo 现在是 %DATE% %TIME%
    echo.
    echo MySQL数据库备份
    echo *****************************
    echo.
    SET "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"for /f %%i in ('mysql -hIP -u用户 -p密码 -N -e "show databases";') do echo %%iecho.
    echo MySQL数据库备份完成,请进行检查
    echo.
    echo.
    pause
      

  18.   

    -- Windows下自动备份所有数据库:-- 假设我将每天的备份文件备份于 D:\mysql_bk\20110818 目录下(注:20110818是当天备份时的日期)-- Step 1: 在 D:\mysql_bk 目录下创建一个 mysql_bk.sql 文件,其内容如下:SELECT t.bk_sql
    FROM (
      SELECT concat('if exist "','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),
                    '" rmdir /s /q "D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),'"') as bk_sql, 1 as cmd_order
      UNION ALL
      SELECT concat('md "','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),'"') as bk_sql, 2 as cmd_order
      UNION ALL
      SELECT concat('mysqldump -uroot -pgroupon1@3$ ',SCHEMA_NAME,' > ',
                    '"','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),
                    '\/',SCHEMA_NAME,'_',date_format(CURDATE(),'%Y%m%d'),'.sql','"') as bk_sql, 3 as cmd_order
    FROM information_schema.SCHEMATA ) t
    ORDER BY t.cmd_order asc
    into outfile 'D:/mysql_bk/mysql_dump.bat';-- Step 2: 在 D:\mysql_bk 目录下创建一个 mysql_bk.bat 文件,其内容如下:if exist "D:\mysql_bk\mysql_dump.bat" del /s /q "D:\mysql_bk\mysql_dump.bat"mysql -uroot -pgroupon1@3$ information_schema < D:\mysql_bk\mysql_bk.sql
    call D:/mysql_bk/mysql_dump.bat /c /q-- Step 3: 创建一个任务计划,每天凌晨 2:00 执行 mysql_bk.bat 文件即可
      

  19.   

    -- Windows下自动备份所有数据库:-- 假设我将每天的备份文件备份于 D:\mysql_bk\20110818 目录下(注:20110818是当天备份时的日期)-- Step 1: 在 D:\mysql_bk 目录下创建一个 mysql_bk.sql 文件,其内容如下:SELECT t.bk_sql
    FROM (
      SELECT concat('if exist "','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),
                    '" rmdir /s /q "D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),'"') as bk_sql, 1 as cmd_order
      UNION ALL
      SELECT concat('md "','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),'"') as bk_sql, 2 as cmd_order
      UNION ALL
      SELECT concat('mysqldump -uroot -pgroupon1@3$ ',SCHEMA_NAME,' > ',
                    '"','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),
                    '\/',SCHEMA_NAME,'_',date_format(CURDATE(),'%Y%m%d'),'.sql','"') as bk_sql, 3 as cmd_order
    FROM information_schema.SCHEMATA ) t
    ORDER BY t.cmd_order asc
    into outfile 'D:/mysql_bk/mysql_dump.bat';-- Step 2: 在 D:\mysql_bk 目录下创建一个 mysql_bk.bat 文件,其内容如下:if exist "D:\mysql_bk\mysql_dump.bat" del /s /q "D:\mysql_bk\mysql_dump.bat"mysql -uroot -pgroupon1@3$ information_schema < D:\mysql_bk\mysql_bk.sql
    call D:/mysql_bk/mysql_dump.bat /c /q-- Step 3: 创建一个任务计划,每天凌晨 2:00 执行 mysql_bk.bat 文件即可
      

  20.   

    -- Windows下自动备份所有数据库:-- 假设我将每天的备份文件备份于 D:\mysql_bk\20110818 目录下(注:20110818是当天备份时的日期)-- Step 1: 在 D:\mysql_bk 目录下创建一个 mysql_bk.sql 文件,其内容如下:SELECT t.bk_sql
    FROM (
      SELECT concat('if exist "','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),
                    '" rmdir /s /q "D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),'"') as bk_sql, 1 as cmd_order
      UNION ALL
      SELECT concat('md "','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),'"') as bk_sql, 2 as cmd_order
      UNION ALL
      SELECT concat('mysqldump -uroot -pyourpassword ',SCHEMA_NAME,' > ',
                    '"','D:\/mysql_bk\/',date_format(CURDATE(),'%Y%m%d'),
                    '\/',SCHEMA_NAME,'_',date_format(CURDATE(),'%Y%m%d'),'.sql','"') as bk_sql, 3 as cmd_order
    FROM information_schema.SCHEMATA ) t
    ORDER BY t.cmd_order asc
    into outfile 'D:/mysql_bk/mysql_dump.bat';-- Step 2: 在 D:\mysql_bk 目录下创建一个 mysql_bk.bat 文件,其内容如下:if exist "D:\mysql_bk\mysql_dump.bat" del /s /q "D:\mysql_bk\mysql_dump.bat"mysql -uroot -pyourpassword information_schema < D:\mysql_bk\mysql_bk.sql
    call D:/mysql_bk/mysql_dump.bat /c /q-- Step 3: 创建一个任务计划,每天凌晨 2:00 执行 mysql_bk.bat 文件即可-- 注意:将 yourpassword 修改成你的数据库密码即可!-- 感觉这种方法较你的方法更为灵活,因为你可以控制你的SQL语句,排除不需要备份的数据库!