mysql如何将数据库中的所有表结构和数据导入到另一个库

 更新时间:2024年10月11日 08:59:48   作者:寻求出路的程序媛  
介绍了如何使用mysqldump命令备份和导入数据库,以及创建目标数据库的步骤,首先使用mysqldump备份源数据库,然后在目标数据库中创建数据库,并将备份文件导入到目标数据库,确保数据结构和内容完整复制,提到了DataGrip、Navicat在导入导出过程中可能出现的问题

一、问题描述

  • 在本地开发一个功能,需要结合具体数据测试代码是否正确,但服务器上的数据不可随便修改。此时则需要将服务器上某个数据库的表批量导入到本地、而后进行测试。
  • 将数据库db1中的所有表及数据(如table1、table2),批量导入到另一个数据库db2中。

二、解决方案

刚开始自己一直尝试用DataGrip、Navicat的sql/csv格式导入导出,总有错误或者遗漏,比如报错中止、50张表却只导入32张等,可能是操作方式有误或者数据格式有问题。

也试过用sql语句,但仍失败。经查阅资料、尝试多次,终于成功,记录如下。

1.使用mysqldump命令备份数据库

首先使用mysqldump命令来备份源数据库。

mysqldump是MySQL自带的命令行工具,可通过在cmd(windows)或 Linux终端(Linux)中执行如下命令来备份整个数据库:

mysqldump -u <username> -p <database_name> > backup.sql

其中,是数据库的用户名,<database_name>是要备份的数据库的名称,backup.sql是备份文件的名称。

执行完该命令后,会在当前目录生成一个名为backup.sql的文件,该文件包含了源数据库的所有表结构和数据。

其他的一些导出语句,可参考以下:

//导出完整数据库结构和数据
mysqldump -u 用户名 -p 数据库名 > 导出的文件名  
//导出数据库结构
mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名 
//导出一个表,包括表结构和数据 
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名     
//导出一个表结构
mysqldump -u 用户名 -p -d数据库名  表名> 导出的文件名   

注:

建议使用mysqldump备份数据库,能完整保留源数据库的结构和数据。

DataGrip、Navicat的导入导出,由于两个数据库之间可能存在差异,数据结构、格式会发生改变,导致复制失败。

2.创建目标数据库

需要在目标数据库中创建对应的数据库,可以使用MySQL的命令行工具登录到目标数据库,执行以下命令来创建数据库:

create database <database_name>;

其中,<database_name>是目标数据库的名称。

3.导入数据 到目标数据库

有了源数据库的备份文件和目标数据库,可以使用MySQL的命令行工具将备份的sql语句导入到目标数据库。

进入backup.sql所在目录(如果是从服务器导入到本机 可将服务器上生成的backup.sql文件下载到本地),在目标数据库的终端执行以下命令:

mysql -u <username> -p <database_name> < backup.sql

其中,是目标数据库的用户名,<database_name>是目标数据库的名称,backup.sql是源数据库的备份文件。

执行完该命令后,目标数据库将包含与源数据库完全相同的所有表结构和数据。

三、补充知识

3.1 mysqldump命令介绍

[root@localhost ~]# mysqldump -help
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

登录选项

1.登录选项:
    -u user:指定用户
    -h host:指定主机
    -p:表示要使用密码
    -E, --events: 备份事件调度器
    -R, --routines: 备份存储过程和存储函数
2.备份选项:
    --all-databases:备份所有数据库
    --databases db1 db2:备份指定的数据库
    --single-transaction:对事务引擎执行热备
    --flush-logs:更新二进制日志文件
    --master-data=2
        1:每备份一个库就生成一个新的二进制文件(默认)
        2:只生成一个新的二进制文件
    --quick:在备份大表时指定该选项

3.2 常用备份命令

//导出命令
#导出包括系统数据库在内的所有数据库(all.sql默认保存在bin文件夹下面)
	mysqldump -u username -p --all-databases > filename.sql
#导出指定数据库表结构和数据
	mysqldump -u username -p dbname [tbname...] > filename.sql	
#导出多个数据库:
	mysqldump -u username -p --databases db1 db2 ...> filename.sql
#导出多张表:
	mysqldump -u username -p --databases db1 --tables t1 t2> filename.sql
#只导出表结构不导表数据,添加“-d”命令参数
    mysqldump -u username -p -d dbname [tbname...] > filename.sql
#只导出表数据不导表结构,添加“-t”命令参数
    mysqldump -u username -p -t dbname [tbname...] > d:/user.sql
#只导出db1数据库的表结构
 导出:mysqldump -u root -p --no-data --databases db1 > backup.sql
 导入:mysql -u root -p db1 < backup.sql
 
 
#系统行导入命令
  mysql -u username -p dbname < d:XX.sql(路径) 
  mysql -u root -p db_name < d:/backup.sql
#source导入
  mysql> use db_name;
  mysql> source /backup/mysqldump/backup.sql(路径)

参数说明:

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

注意:

mysqldump 命令必须在 cmd 窗口下执行,不能登录到 MySQL 服务中执行。

输入密码后,Mysql就会进行备份了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql中between的边界,范围说明

    mysql中between的边界,范围说明

    这篇文章主要介绍了mysql中between的边界,范围说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Windows下MySQL8.0.11社区绿色版安装步骤图解

    Windows下MySQL8.0.11社区绿色版安装步骤图解

    在本教程中使用MySQL最新的MySQL服务8.0.11的社区绿色版本进行安装,绿色版为zip格式的包,安装步骤分为四大步骤,具体哪四大步骤大家跟随脚本之家小编一起学习吧
    2018-05-05
  • mysql修改用户密码报错的解决方法

    mysql修改用户密码报错的解决方法

    mysql 初始化时,使用临时密码,修改自定义密码时,由于自定义密码比较简单,就出现了不符合密码策略的问题,这篇文章主要介绍了mysql修改用户密码报错,需要的朋友可以参考下
    2023-03-03
  • mysql存储过程中使用游标的实例

    mysql存储过程中使用游标的实例

    使用MYSQL存储过程,可以实现诸多的功能,下面将为您介绍一个MYSQL存储过程中使用游标的实例
    2014-01-01
  • MySQL 用 limit 为什么会影响性能

    MySQL 用 limit 为什么会影响性能

    对于小的偏移量,直接使用limit来查询没有什么问题,但随着数据量的增大,越往后分页,limit语句的偏移量就会越大,速度也会明显变慢,接下来文章就向大家介绍其的原由,感兴趣的小伙伴可参考下面文章具体内容
    2021-09-09
  • 探究MySQL优化器对索引和JOIN顺序的选择

    探究MySQL优化器对索引和JOIN顺序的选择

    这篇文章主要介绍了探究MySQL优化器对索引和JOIN顺序的选择,包括在优化器做出错误判断时的选择情况,需要的朋友可以参考下
    2015-05-05
  • navicat如何利用sql语句查询表所有字段的字段名、类型及长度

    navicat如何利用sql语句查询表所有字段的字段名、类型及长度

    Navicat使用了极好的图形用户界面(GUI),可以让你用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息,下面这篇文章主要给大家介绍了关于navicat如何利用sql语句查询表所有字段的字段名、类型及长度的相关资料,需要的朋友可以参考下
    2023-05-05
  • MySQL数据库迁移OpenGauss数据库解析

    MySQL数据库迁移OpenGauss数据库解析

    这篇文章主要介绍了MySQL数据库迁移OpenGauss数据库解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • mysql VARCHAR的最大长度到底是多少

    mysql VARCHAR的最大长度到底是多少

    今天群里有人问varchar 不是最大应该只可以设置65532(第一个字节+两个长度字节)吗 ,但是为什么可以设置成65533
    2012-10-10
  • MySQL修改账号密码方法大全(小结)

    MySQL修改账号密码方法大全(小结)

    这篇文章主要介绍了MySQL修改账号密码方法大全(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论