请问下在命令行内用mysqldump可以调用内存中的表吗?就是我用储存过程创建了个临时表,执行过程后临时表的数据在内存里,现在我想把临时表中的数据dump出来,可以吗?还是创建一个普通的表,然后dump后再删除这个表,作用就跟临时表一样了。?

解决方案 »

  1.   

    我知道,在mysql command line client里用select * from tmp_table into outfile "name.txt"可以把临时表里的导出来。但我想问的是如何mysqldump命令来找到临时表,如何从内存内dump。
      

  2.   

    mysqldump -uroot -p1234 db1 table1 > xx.sql
      

  3.   

    参考一下手册中的用法和说明。
    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   


    mysql> CREATE TEMPORARY TABLE TMP(A int);
    ERROR 1046 (3D000): No database selected
    mysql> use mydb;
    Database changed
    mysql> CREATE TEMPORARY TABLE TMP(A int);
    Query OK, 0 rows affected (0.20 sec)mysql> insert into TMp values(1);
    Query OK, 1 row affected (0.06 sec)mysql> select * from tmp;
    +------+
    | A    |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)mysql> exit
    Bye
    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.D:\mysql6\bin>mysqldump -uroot -p123 mydb tmp>1.sql
    mysqldump: Couldn't find table: "tmp"D:\mysql6\bin>
    临时表只是连接有效,也就是说你在连接1里面创建的临时表,能且只能在连接1内访问得到。另外启动一个连接或者断开原来的链接回到DOS命令行下,都会导致临时表的失效。4楼的答案有待商榷。
    在连接保持的情况下
    select * from tmp_table into outfile "name.txt"
    可以得到临时表的数据。
      

  5.   

    mysql 有global临时表就好了。
      

  6.   

    所以我用储存过程创建一个临时表,并把数据库里的数据插入到临时表内,call执行后,(没有exit),然后进行dump是不可行的喽?
      

  7.   

    call执行后,(没有exit),然后进行dump是不可行的喽?你能够做到DUMP和存储过程是同一个SESSION么??如果你能做到,那么可行。否则不可行。DUMP不属于任何一个SESSION。