4.6 MySQL数据库导入与导出攻略

简介: 4.6 MySQL数据库导入与导出攻略

4.6 MySQL数据库导入与导出攻略

4.6.1 Linux下MySQL数据库导入与导出

  1. MySQL数据库的导出命令参数

主要是通过两个mysql和mysqldump命令来执行

(1) MySQL连接参数

-u $USER: 用户名

-p $PASSWD: 密码

-h 127.0.0.1 主机IP

-P 3306 端口

--default-character-set=utf-8 指定字符集

--skip-column-names 不显示数据列的名字

-B 以批处理的方式运行MySQL程序,查询结果将显示为制表符间隔格式

-e 执行命令后,退出

(2) mysqldump参数

-A 全库备份

--routines 备份存储过程和函数

--default-character-set=utf-8 指定字符集

--lock-all-tables 全局以执行锁

--add-drop-database 在每次执行建表语句前,先执行DROP TABLE IF EXIST语句

--no-create-db 不输出CREATE DATABASE 语句

--no-create-info 不输出CREATE TABLE 语句

--databases 将后面的参数都解析为库名

--tables 第一个参数为库名,后续为表名

  1. MySQL数据库的常见导出命令

(1) 导出全库备份到本地目录

mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf-8 --lock-all-tables --add-drop-database -A > bmfxdb.all.sql

(2) 导出指定库到本地的目录

mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf-8 --databases bmfxtest > bmfxdb.sql

(3) 导出某个库的表到本地目录

mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf-8 --tables bmfxtest user > bmfxuser.db.sql

(4) 导出指定库的表(仅数据) 到本地的目录

mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf-8 --no-create-db --no-create-info --tables mysql user --where="host='localhost'" > bmfxdb.table.sql

(5) 导出某个库的所有表结构

mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf-8 --no-data --databases mysql > bmfxdb.nodata.sql

(6) 导出某个查询SQL的数据为.txt格式文件到本地的目录

'select host,user,password from mysql.user;'

mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf-8 --skip-column-names -B -e 'select host,user,password from mysql.user;' > mysql_user.txt

(7) 导出某个查询SQL的数据为.csv格式文件到MySQL服务器

MySQL需要有写的权限,用tmp目录最好

select host,user,password from mysql.user into outfile '/tmp/mysql_user.csv' FIELDS TERMINATED BY ', ';

  1. 加快MySQL数据库导出速度的技巧

--max_allowed_packed=xxx 客户端/服务端之间通信缓存区的最大值

--net-buffer_length=xxx TCP/IP和套接字层通信缓冲区大小,创建长度达net_buffer_length的行

上面的参数设置值的时候,不能比目标数据库设置的数值大

show variables like 'max_allowed_packed';

show variables like 'net-buffer_length';

mysqldump -uroot -pbmfx bmfxtest -e --max_allowed_packet=8388608 --net_buffer_length=8192 > bmfx.sql

当然最快的方法是直接复制数据库目录,前提是停掉MySQL数据库服务

  1. Linux下MySQL数据库导入常见命令

导入完成的时候需要执行 flush privileges

(1) mysql -u$USER -p#PASSWD -h127.0.0.1 -P3306 --default-character-set=utf-8 < bmfxdb.all.sql

(2) 使用source命令导入

前提是登录到mysql数据库里面,然后执行source命令,需要导入的文件名要么在当前登录数据库的路径,要么是绝对路径

mysql> source /tmp/bmfxdb.all.sql

(3) 使用mysql命令恢复某个库的数据

mysql -u$USER -p#PASSWD -h127.0.0.1 -P3306 --default-character-set=utf-8 bmfxtest < bmfx.user.sql

(4) 使用source恢复某个库的数据

mysql -u$USER -p#PASSWD -h127.0.0.1 -P3306 --default-character-set=utf-8

mysql> use bmfxtest;

mysql> source /tmp/bmfx.db.sql

(5) 恢复MySQL服务器上面的.txt格式文件

mysql -u$USER -p#PASSWD -h127.0.0.1 -P3306 --default-character-set=utf-8

mysql> use mysql;

mysql> LOAD DATA INFILE '/tmp/mysql_user.txt' INTO TABLE user;

(6) 恢复MySQL服务器上面的.csv格式文件,需要FILE权限 ,各个数据直接用逗号分隔

mysql -u$USER -p#PASSWD -h127.0.0.1 -P3306 --default-character-set=utf-8

mysql> use mysql;

mysql> LOAD DATA INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ', ';

(7) 恢复本地的.txt或.csv文件到MySQL

mysql -u$USER -p#PASSWD -h127.0.0.1 -P3306 --default-character-set=utf-8

mysql> use mysql;

mysql> LOAD DATA INFILE '/tmp/mysql_user.txt' INTO TABLE user; //.txt情况

mysql -u$USER -p#PASSWD -h127.0.0.1 -P3306 --default-character-set=utf-8

mysql> use mysql;

mysql> LOAD DATA INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ', '; //.csv情况

4.6.2 Windows下MySQL数据库导入与导出

  1. mysqldump命令导入和导出

导出数据库

mysqldump -u root -p root bmfxdb > D:\backup20200701.sql

导入数据库

mysqldump -u root -p root bmfxdb < D:\backup20200701.sql

  1. mysql命令导入导出

(1) 将数据库bmfxdb导出到D盘根目录bmfx.sql

mysql -uroot -proot -hlocalhost bmfxdb > D:\bmfx.sql

(2) 将数据库D盘文件下的bmfx.sql文件导入到数据库bmfxtest中

mysql -uroot -proot -hlocalhost bmfxtest < D:\bmfx.sql

可以在登录的情况下使用source命令

source D:\bmfx.sql

4.6.3 HTML文件导入MySQL数据库

  1. 选择导入类型

通过研究发下Navicat可以导入多种类型,可以使用此工具选择导入HTML文件的格式进行导入

  1. 查看文件的编码格式

在导入前一定要知道文件是以何种格式进行编码,查看编码的方式可以使用各种出名的编辑器工具进行查看,作者这里使用的Notepad++ , 大家可以根据自己喜欢的编辑器工具使用,这里大家一定要注意,否则导入会显示乱码

  1. 选择编码方式

使用工具的时候选择对应的编码,一般推荐大家都是有UTF-8编码

  1. 设置栏名称和起始数据行
  1. 设置目标表名称
  1. 设置目标表的列名
  1. 查看导入日志
  1. 查看导入数据

4.6.4 MSSQL数据库导入MySQL数据库

MSSQL数据库导入与HTML导入MySQL的操作基本相同,导入类型-ODBC 在数据链接属性的窗口中选择 Microsoft OLE DB Provider for SQL Server

4.6.5 XLS或者XLSX文件导入MySQL数据库

还是使用工具Navicat,方式跟上面一样,注意选中的Sheet有几个即可

4.6.6 Navicat for MySQL导入XML数据

有的数据存在的文件后缀是.txt但是里面的内容结构是XML语法格式,那么这个时候是可以同将txt后缀改成XML格式然后使用Navicat工具进行导入,还是得注意在导入的时候记得选中UTF-8编码

  1. 选择编码方式
  1. 选择表字段
  1. 设置数据行
  1. 设置目标表名称
  1. 设置导入的栏位名称
  1. 选择导入模式
  1. 导入数据库
  1. 后续处理

导入成功之后会有一些无用的垃圾数据,可以清楚掉

delete from log where appid isnull

4.6.7 Navicat 代理导入数据

首先要在Navicat的安装目录下找到文件ntunnel_mysql.php

(1) 在常规中设置,新建-连接,设置一个连接的名称,主机名设置为localhost,然后设置好账号和密码

(2) 使用HTTP通道,选择HTTP选项卡,使用HTTP通道,然后输入http://www.xx.com/ntunnel_mysql.php ,前提是这个文件已经上传到目标站点了

(3) 上述操作完成了,就可以开始连接了

4.6.8 导入技巧和出错处理

  1. 进行转码处理

使用Notepad++或者其他编辑器工具进行转码,一般将其转换为UTF-8编码格式

  1. 选择出错继续

需要勾选这个选项卡

3.错误信息再处理

有的时候数据格式不全,或者编码中有多余的特殊字符,将会导致数据导入失败,没有成功导入的数据会在日志上显示,可以将日志中出错的信息复制到记事本中进行查看,修改错误的地方之后,再查询在查询器中进行查询导入

实际操作的SQL语句

mysqldump -uroot -proot -hlocalhost -P3306 --routines --default-character-set=utf-8 --lock-all-tables --add-drop-database -A > bmfxdb.all.sql

mysqldump -uroot -proot -hlocalhost -P3306 --routines --databases mysql > mysql.sql

mysqldump -uroot -proot -hlocalhost -P3306 --routines --tables mysql user > bmfxuser.db.sql

mysqldump -uroot -proot -hlocalhost -P3306 --routines --no-create-db --no-create-info --tables mysql user --where="host='localhost'" > bmfxdb.table.sql

mysqldump -uroot -proot -hlocalhost -P3306 --routines --no-data --databases mysql > bmfxdb.nodata.sql

mysqldump -uroot -proot -hlocalhost -P3306 --routines --default-character-set=utf-8 --skip-column-names -B -e 'select host,user,password from mysql.user;' > mysql_user.txt

mysql -uroot -proot -hlocalhost -P3306 --default-character-set=utf-8 < bmfxdb.all.sql

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
11月前
|
SQL 关系型数据库 MySQL
如何将Excel表的数据导入RDS MySQL数据库?
本文介绍如何通过数据管理服务DMS将Excel文件(转为CSV格式)导入RDS MySQL数据库,涵盖建表、编码设置、导入模式选择及审批执行流程,并提供操作示例与注意事项。
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
2348 0
|
数据库 数据安全/隐私保护
【YashanDB知识库】exp 导出数据库时,报错YAS-00402
【YashanDB知识库】exp 导出数据库时,报错YAS-00402
【YashanDB知识库】exp 导出数据库时,报错YAS-00402
|
关系型数据库 数据库连接 数据库
循序渐进丨MogDB 中 gs_dump 数据库导出工具源码概览
通过这种循序渐进的方式,您可以深入理解 `gs_dump` 的实现,并根据需要进行定制和优化。这不仅有助于提升数据库管理的效率,还能为数据迁移和备份提供可靠的保障。
467 6
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课18 通过pg_bulkload适配pfs实现批量导入提速
本文介绍了如何修改 `pg_bulkload` 工具以适配 PolarDB 的 PFS(Polar File System),从而加速批量导入数据。实验环境依赖于 Docker 容器中的 loop 设备模拟共享存储。通过对 `writer_direct.c` 文件的修改,替换了一些标准文件操作接口为 PFS 对应接口,实现了对 PolarDB 15 版本的支持。测试结果显示,使用 `pg_bulkload` 导入 1000 万条数据的速度是 COPY 命令的三倍多。此外,文章还提供了详细的步骤和代码示例,帮助读者理解和实践这一过程。
800 0
|
关系型数据库 MySQL Linux
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
749 8
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
数据库 数据安全/隐私保护
【YashanDB 知识库】exp 导出数据库时,报错 YAS-00402
**简介:** 在执行数据导出命令 `exp --csv -f csv -u sales -p sales -T area -O sales` 时,出现 YAS-00402 错误,提示“Connection refused”。原因是数据库安装时定义的 IP 地址或未正确配置导致连接失败。解决方法是添加 `--server-host ip:port` 参数,例如 `exp --csv -f csv -u sales -p sales -T area -O sales --server-host 192.168.33.167:1688`。
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。

热门文章

最新文章

推荐镜像

更多