数据库:mysql5.1,
语言:c++在c++下,
如何热备份数据库?如何导出导入表数据?谢谢?

解决方案 »

  1.   

    建议还是在slave做mysqldump操作来做备份库
    导入导出表直接用select * into outfile='' from tb
    load data
      

  2.   

    我要在c++中调用mysql的c api函数来实现。如下语句是把表testtab1的数据导出到'E:\\dzq\\testdata\\zzzzz.txt'  中,
    我是这么做的:int ret = mysql_real_query(&m_mysql,strMid.c_str(),strMid.size());
    strMid = "SELECT * FROM testtab1 INTO OUTFILE 'E:\\dzq\\testdata\\zzzzz.txt'  FIELDS TERMINATED BY ',\t' LINES TERMINATED BY '\r\n'";ret = 1,可执行失败。
    为什么?如何用mysqldump?
      

  3.   

    可以调用C中的SHELL来直接运行操作系统命令。mysqldump -uroot -p1234 db1 > back.sql
      

  4.   

    导出表按1楼的方法用SELECT INTO OUTFILE和LOAD DATA加载即可。具体请参考一下MYSQL的帮助手册。
      

  5.   

    我是这么做的:int ret = mysql_real_query(&m_mysql,strMid.c_str(),strMid.size());
    strMid = "SELECT * FROM testtab1 INTO OUTFILE 'E:\\dzq\\testdata\\zzzzz.txt' FIELDS TERMINATED BY ',\t' LINES TERMINATED BY '\r\n'";可出错,
    在c++中该如何执行上面的语句呢?函数mysql_real_query为什么不能执行此语句呢?
    可以调用C中的SHELL来直接运行操作系统命令。mysqldump -uroot -p1234 db1 > back.sql
    在c++中如何执行上面的shell命令呢?
      

  6.   

    C++中调用cmd 命令行,实现导入导出‘实际上就是使用的mysql自带的命令
      

  7.   

    我是这么做的:int ret = mysql_real_query(&m_mysql,strMid.c_str(),strMid.size());
    strMid = "SELECT * FROM testtab1 INTO OUTFILE 'E:\\dzq\\testdata\\zzzzz.txt' FIELDS TERMINATED BY ',\t' LINES TERMINATED BY '\r\n'";
    这个错误找到了,原因:
    把:'E:\\dzq\\testdata\\zzzzz.txt' 
    改为:'E:/dzq/testdata/zzzzz.txt' 
    但不知为什么要把\改为/,不明白。
    我是利用接口mysql_error的返回值发现的,挺有用的。
    问题:
    mysqldump -uroot -p1234 db1 > back.sql
    在c++中如何执行上面的shell命令呢?
      

  8.   

    我利用系统函数system来执行命令:mysqldump -uroot -p1234 db1 > back.sql
    虽然能成功,但当数据多时,dos窗口会停留一会儿,不太好,
    不知有什么更好的办法没有?