mysql 导入导出

使用 mysqldump 命令备份一个数据库的语法格式如下:

mysqldump -u username -p dbname [tbname ...]> filename.sql

对上述语法参数说明如下:

  1. username:表示用户名称;
  2. dbname:表示需要备份的数据库名称;
  3. tbname:表示数据库中需要备份的数据表,可以指定多个数据表。省略该参数时,会备份整个数据库;
  4. 右箭头“>”:用来告诉 mysqldump 将备份数据表的定义和数据写入备份文件;
  5. filename.sql:表示备份文件的名称,文件名前面可以加绝对路径。通常将数据库备份成一个后缀名为.sql的文件。

注意:mysqldump 命令备份的文件并非一定要求后缀名为.sql,备份成其他格式的文件也是可以的。例如,后缀名为 .txt 的文件。通常情况下,建议备份成后缀名为 .sql 的文件。因为,后缀名为.sql 的文件给人第一感觉就是与数据库有关的文件。

导出:

mysqldump -uroot -pPassword 数据库名 > 导出文件名.sql                   ##导出数据库
mysqldump -uroot -pPassword 数据库名 表名 > 导出文件名.sql              ##导出数据库下的某张表

如果报错:

ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty

查找度娘了解到:
当前GTID_EXECUTED参数已经有值,而导出来的dump文件中包含了SET @@GLOBAL.GTID_PURGED的操作,解决方式是在dump导出时,添加--set-gtid-purged=off参数,避免将gtid信息导出。

mysqldump -uroot -p --set-gtid-purged=off 数据库名 > 导出文件名.sql

参数:
-d(--no-data)不导出任何数据,只导出数据库表结构。
-t(--no-create-info)只导出数据,而不添加CREATE TABLE 语句。
-A(--all-databases)导出全部数据库。
-B(--databases)导出几个数据库。参数后面所有名字参量都被看作数据库名。
--default-character-set 设置默认字符集,默认值为utf8
--add-drop-database 每个数据库创建之前添加drop数据库语句。
--add-drop-table 每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)
--add-locks 在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用--skip-add-locks取消选项)
-X(--xml)导出XML格式
...........

导入:
导入文件在当前路径
进入mysql
进入数据库

use 数据库名

导入数据

source  ./文件名

导入整个数据库应该就不需要use了直接source,主要是没尝试了。

另一种方式是直接使用 mysql命令 执行sql查询语句导出,如

mysql -u用户 -p密码 -h主机 数据库名 -e"select * from tb_name where id = 1;" > re.txt

这种导出的txt内容可以直接复制到excel显示,某些情况下也比较方便

你可能感兴趣的:(mysql 导入导出)