mysql下生成备份表的命令的语句
在MySQL中字符串的连接需要使用concat函数,而其它数据库管理系统比如sqlserver&sybase使用+,oracle使用||。Sybase ASE15中也可以用||来连接字符串。
concat函数语法: concat(str1,str2,....strN)
1.使用mysqldump备份表的简单语法为:
mysqldump -u用户名 -p密码 --default-character-set=字符集 数据库名 表名> 表的备份文件名
例: mysqldump -uroot -pmypasswd --default-character-set=latin1 andkylee MYTABLE > d:\MYTABLE.SQL
注意:数据库名和表名之间用空格分割。
2.使用mysqldump备份数据库的简单语法为:
mysqldump -u用户名 -p密码 --default-character-set=字符集 --databases 选项 数据库名 > 数据库的备份文件名
例: mysqldump -uroot -pmypasswd --default-character-set=latin1 --databases andkylee > d:\db_andkylee.SQL
如果想在脚本前面加上drop database命令,使用选项:--add-drop-database,
mysqldump -uroot -pmypasswd --default-character-set=latin1 --databases --add-drop-database andkylee > d:\db_andkylee.SQL
在备份数据库的时候,不备份其中某个表,使用选项:--ignore-table=<database>.<table>
例: mysqldump -uroot -pmypasswd --default-character-set=latin1 --databases --add-drop-database --ignore-table=andkylee.pma_bookmark --ignore-table=andkylee.pma_column_info andkylee > d:\db_andkylee.SQL
3.批量生成与上面类似的备份某个数据库内所有表的语句可以使用SQL:
select concat('mysqldump -uroot -pmypasswd --default-character-set=latin1 wwwdbai_myblog ',table_name,' > d:\\wwwdbai_myblog\\',table_name,'.sql') from information_schema.TABLES where table_schema='wwwdbai_myblog';
注意:MySQL字符串中的特殊字符,比如本例子中的反斜杠\需要进行转义,转义字符为:\
4. 查看mysqldump帮助使用选项:--help ,
mysqldump --help
几个比较实用的选项为:
-c, --complete-insert Use complete insert statements.
--default-character-set=name Set the default character set.
-e, --extended-insert Use multiple-row INSERT syntax that include several VALUES lists.
--fields-terminated-by=name Fields in the textfile are terminated by ...
--ignore-table=name
-n, --no-create-db
-t, --no-create-info
-d, --no-data No row information.
--tables Overrides option --databases (-B).
-w, --where=name Dump only selected records; QUOTES mandatory!
mysqldump在导出表数据的时候,默认总是导出一个长的insert语句;
如果想要每条记录对应一个insert语句,只需要加选项--extended-insert=false即可。mysqldump中可以看到此参数的默认值为true。
这样在不支持insert多值的数据库中,可以很方便的进行迁移。