中国站
帮助中心 > 数据库 > 云数据库MySQL > 常见问题 > 如何导入数据

如何导入数据

建议使用:

导出:

  1. mysqldump -u'username' -p'pwd' -F --skip-add-drop-table --single-transaction --master-data=2 -B 1 2 >db.sql

导入:

  1. mysql> source sql文件绝对路径;

从源数据库导出

说明:
[—tables 表1 表2 …] 中括号[]包住的表示可选参数。

导出指定数据库下的表(结构、数据)

  1. mysqldump -u'username' -p'pwd' --skip-add-drop-table -B 库名 [--tables 1 2 ...]> target.sql

导出指定数据库下的表(结构)

  1. mysqldump -u'username' -p'pwd' -d --skip-add-drop-table -B 库名 [--tables 1 2 ...]> target.sql

导出指定数据库下的表(数据)

  1. mysqldump -u'username' -p'pwd' -t --skip-add-drop-table -B 库名 [--tables 1 2 ...]> target.sql

导出多个数据库下的表(结构、数据)

  1. mysqldump -u'username' -p'pwd' --skip-add-drop-table -B 库名1 库名2 ... > target.sql

导出多个数据库下的表(结构)

  1. mysqldump -u'username' -p'pwd' -d --skip-add-drop-table -B 库名1 库名2 ... > target.sql

导出多个数据库下的表(数据)

  1. mysqldump -u'username' -p'pwd' -t --skip-add-drop-table -B 库名1 库名2 ... > target.sql

常用参数解析

  • -u —user=name:数据备份所使用的用户名
  • -p —password[=name]:数据备份所使用的用户名对应的密码
  • -P —port=#:数据库服务端口
  • -h —host=name:数据备份的源地址
  • -t —no-create-info:只导出数据,而不添加CREATE TABLE 语句
  • —master-data=2:二进制日志的位置和文件名会被记录在文件中,如果等于1,将把它作为一个CHANGE MASTER命令;如果等于2,该命令将以注释符号为前缀。
  • -d —no-data:不导出任何数据,只导出数据库表结构
  • -B —databases:导出数据库列表,单个库时可省略
  • -A —all-databases:所有库
  • —single-transaction:此选项会将隔离级别设置为:REPEATABLE READ。并且随后再执行一条START TRANSACTION语句,让整个数据在dump过程中保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表。但是这个不能保证MyISAM表和MEMORY表的数据一致性。
  • —skip-add-drop-table 不添加DROP TABLE 语句
  • —tables 指定单个或多个表
  • -F, —flush-logs 在开始备份之前刷新到新的日志文件

将上一步操作生成的(.sql)文件导入数据库

内网导入

  1. 登录 云服务器 控制台实例列表中操作栏的登录或命令行工具登录与目标云MySQL同一区域的云服务器;
  2. 将生成的sql文件通过scp命令上传到任意目录(如果上一步骤是直接导出到云服务器可跳过这一步);
  3. 通过执行以下命令执行导入
    1. mysql -u'user' -p'pwd' -h'云RDS连接ip' -P RDS端口(默认3306) -e "source sql绝对路径"
    请确保云服务器与MySQL实例的内网相通;云服务器搭建内网详见如何搭建内网
    若未创建数据库账号,可在账号管理页签创建账号并授权

使用第三方工具(Navicat等)

导入导出均可。
请参见:https://www.yisu.com/help/id_579.html

常见问题

  1. 导入过程中出现提示“权限不足”,通常是由设置全局变量的语句造成,打开文件删除对应语句即可。

  2. 导入是不允许覆盖系统表的。