一直想提高一点SQL的知识,这两天终于用“SQL必知必会”里的例子练了练手,顺便练习了一下dump命令。对于测试人员来说,维护好测试数据也是很重要的,这个命令应该会很管用。当然,对于不同的数据库会有不同的规范,以后再慢慢了解了。
参考mysql dump命令详解见如下地址,http://vod.sjtu.edu.cn/help/Article_Show.asp?ArticleID=1551
按照上面链接中的顺序,我依次试验了不同参数。大家可根据自己的实际情况选择参数,达到数据维护及数据恢复的目的。
1./usr/bin/mysqldump -p test > test.txt
输出完整的库表信息,包括表的create及insert语句。其中drop table if exits 'Customers'的意思是如果导入的表存在那么先执行drop动作再导入,这样保证导回数据库的表不会出错;其次lock tables 'Customers' write的意思是在执行下面insert(写)操作的过程中将表锁住,也就是在有别的人操作库表时不会受到影响,避免数据冲突。下图是sql输出的文件,窃取其中一个表作为样例。
这里对于导出某个表或者某些数据的命令就不单独说了,重点在各个参数的应用上哈。
2.-c参数 /usr/bin/mysqldump -c test > /home/chang/Tool/MySQL/testc.txt 这个命令在如上链接中解释的很清楚,就是在insert中加入了具体的表字段,对于重新创建一个数据库的情况会很有用。这里的图片中只列出与上一个命令的不同之处。
3. --delayed-insert 即在导出sql的文件中insert语句加入了delay关键字。我的理解是先把sql放在内存中,若没有进程对DB进行操作,那么执行insert操作。
http://blog.csdn.net/wangyi1015/archive/2009/03/10/3975990.aspx
4.-full参数,添加附加信息。
5.-l 导出表的时候对表加锁,防止导出时有人提交了数据库表修改,导出内容没有什么不同。
6.-t /usr/bin/mysqldump -t test > testt.txt导出文件中不包括create table的DDL语句。我想这样,在将数据导入的时候只导入数据会使导入时间加快吧。
7.-d 与-t相反,此参数只导出create语句,不创建insert语句。
8.-q 感觉是快速导出的参数吧,信息没有什么不同,所以不在这里贴图了。
9.-T path/--tab=path
-T, --tab=name Create tab-separated textfile for each table to given path. (Create .sql and .txt files.) NOTE: This only works if mysqldump is run on the same machine as the mysqld server.
需要创建好要存放.sql(DDL文件)和.txt(数据文件)的文件目录。如果指定的文件目录未创建,会返回这样的错误,mysqldump: Can't create/write to file '/home/MySQL/Customers.sql' (Errcode: 2)。
我遇到的问题是,返回Errcode:13的错误,如下:
mysqldump: Got error: 1: Can't create/write to file '/home/chang/Tool/MySQL/test/Customers.txt' (Errcode: 13) when executing 'SELECT INTO OUTFILE'。根据找到的信息(http://bbs.chinaunix.net/thread-1423971-1-1.html),用perror 13打印错误信息说是没有权限,查看文件权限没有问题,还没有解决这个问题。我的目录结构及操作如下图,如果有会的同学、大虾,帮忙给看看呗,谢谢!!!
关于mysqldump的一些参数今天先说到这儿,还有很多参数,之后再慢慢补充。