mysqldump:数据库备份程序 有 3 种方式来调用 mysqldump : mysqldump [ options ] db_name [ tables ] mysqldump [ options ] -- -database DB1 [DB2 DB3...] mysqldump [ options ] -- all--database 如果没有指定任何表或使用了 ---database 或 --all--d
有3种方式来调用mysqldump:
mysqldump <span>[</span><span>options</span><span>]</span> <span>db_name</span> <span>[</span><span>tables</span><span>]</span><span> mysqldump </span><span>[</span><span>options</span><span>]</span> <span>--</span><span>-database DB1 [DB2 DB3...]</span> mysqldump <span>[</span><span>options</span><span>]</span> <span>--</span><span>all--database</span>
如果没有指定任何表或使用了---database或--all--database选项,则转储整个数据库。
备份一个数据库.
mysqldump <span>-</span>uroot <span>-</span>p123456 mysql <span>></span> mysql_backup.sql
这里备份了database mysql的结构和数据,生成的sql文件不会有创建database mysql的语句。
可以用一个命令备份mysql,test多个数据库:
mysqldump <span>-</span>u root <span>-</span>p123456 <span>--</span><span>database mysql test > my_databases.sql</span>
生成的sql文件有创建database mysql和test的语句
备份所有数据库:
mysqldump <span>-</span>u root <span>-</span>p123456 <span>--</span><span>all-databases > all_databases.sql</span>
导出mysql这个数据库的结构
mysqldump <span>-</span>u root <span>-</span>p123456 <span>-</span>d <span>--</span><span>add-drop-table mysql > mysql_define.sql</span>
导出一个数据所有数据并用gz压缩
mysqldump <span>-</span>u root <span>-</span>p123456 mysql <span>|</span> gzip <span>></span> mysql.sql.gz
可以这样将转储文件读回到服务器:
mysql <span>db_name</span> <span> <span>backup</span><span>-</span><span>file</span><span>.sql mysql </span><span>-</span>e "source <span>/</span>path<span>-</span><span>to</span><span>--</span><span>backup/backup-file.sql" db_name</span></span>
或者从gz文件中还原
gunzip <span>-</span>f <span> mysql.sql.gz <span>|</span> mysql <span>-</span>u root <span>-</span>p123456 test</span>
更多参考 http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#mysqldump
SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被选择的行写入一个文件中,该文件被创建到服务器主机上。
SELECT...INTO OUTFILE是LOAD DATA INFILE的补语;用于语句的exort_options部分的语法包括部分FIELDS和LINES子句,这些子句与LOAD DATA INFILE语句同时使用。
在下面的例子中,生成一个文件,各值用逗号隔开。这种格式可以被许多程序使用
<span>SELECT</span> <span>*</span> <span>INTO</span> OUTFILE <span>'</span><span>/tmp/result.txt</span><span>'</span><span> FIELDS TERMINATED </span><span>BY</span> <span>'</span><span>,</span><span>'</span><span> OPTIONALLY ENCLOSED </span><span>BY</span> <span>'</span><span>"</span><span>'</span><span> LINES TERMINATED </span><span>BY</span> <span>'</span><span>\n</span><span>'</span> <span>FROM</span> mysql.<span>user</span>;
将mysql数据库的user表的数据导出到/tmp/result.txt
SELECT...INTO OUTFILE只能导出数据,不能导出结构,一般和load data联合使用。
更多参考 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#select
LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。
由character_set_database系统变量指示的字符集被用于解释文件中的信息。
<span>LOAD</span> DATA LOCAL INFILE <span>'</span><span>/tmp/result.txt' INTO TABLE test.user FIELDS TERMINATED BY </span><span>'</span>,<span>'</span><span> OPTIONALLY ENCLOSED BY </span><span>'</span>"<span>'</span><span> LINES TERMINATED BY </span><span>'</span>\n<span>'</span>
把/tmp/result.txt的数据导入到test数据库的user表。
更多参考 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data