首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
Postrge-SQL
›
MySQL数据导出导出的三种办法(13/16)
返回列表
发新帖
MySQL数据导出导出的三种办法(13/16)
[复制链接]
发表于 2024-6-12 20:05:08
|
显示全部楼层
|
阅读模式
数据导入导出
基本概述
现在常用的有3中数据导入与导出方法:
利用mysqldump工具
:
优点
:
简单易用,只需一条命令即可完成数据导出。
可以导出表结构和数据,方便完整
备份
。
支持过滤条件,可以选择导出部门数据。
天生的文件可以用于跨平台、跨
版本
的数据迁徙。
缺点
:
导出的数据包含额外的INSERT语句,大概导致导入速率较慢。
不能利用复杂的JOIN条件作为过滤条件。
推荐场景
:
须要
备份
和迁徙表结构和数据。
须要导出部门数据到其他系统或进行
数据分析
。
导出CSV文件
:
优点
:
CSV格式通用,易于在不同应用程序间交换数据。
可以利用文本编辑器查看和编辑数据。
支持全部SQL写法的过滤条件。
缺点
:
导出的数据保存在
服务器
本地,大概受到secure_file_priv参数限定。
每次只能导出一张表的数据。
须要单独
备份
表结构。
推荐场景
:
须要将数据导出到本地文件系统或共享网络位置。
须要将数据导入到其他非MySQL系统或应用程序。
物理拷贝表空间
:
优点
:
速率极快,尤其是对于大表数据的复制。
可以直接复制整个表的数据,不须要逐条插入。
缺点
:
须要
服务器
端操纵,无法在客户端完成。
必须是全表拷贝,不能选择性导出数据。
仅限于InnoDB引擎的表。
推荐场景
:
须要快速复制大表数据到另一个
数据库
或
服务器
。
源表和目标表都利用InnoDB引擎。
有服务器文件系统的访问权限。
在选择利用哪种方法时,还须要思量数据的巨细、是否须要跨平台迁徙、是否有权限访问服务器文件系统、是否须要保存表结构等因素。通常,假如须要快速迁徙大量数据并且对数据的完整性有高要求,物理拷贝表空间是一个好选择。假如数据量较小或者须要跨平台迁徙,利用mysqldump或导出CSV文件大概更合适。
mysqldump工具
利用mysqldump导出数据
:
mysqldump -h$host -P$port -u$user --add-locks=0 --no-create-info --single-transaction --set-gtid-purged=OFF db1 t --where="a>900" --result-file=/client_tmp/t.sql
-h: 指定MySQL服务器的主机名。$host: 替换为实际的主机名。
-P: 指定MySQL服务器的端口号。$port: 替换为实际的端口号。
-u: 指定登录MySQL的用户名。`$user`: 替换为实际的用户名。
--add-locks=0: 导出时不增加额外的锁。
--no-create-info: 不导出表结构。
--single-transaction: 在导出数据时不需要对表加表锁。
--set-gtid-purged=OFF: 不输出与GTID相关的信息。
db1: 指定要导出的
数据库
名。
t: 指定要导出的表名。
--where="a>900": 导出满足条件a>900的数据。
--result-file=/client_tmp/t.sql: 指定导出结果的文件路径。
复制
代码
将数据导入到目标
数据库
:
mysql -h127.0.0.1 -P13000 -uroot db2 -e "source /client_tmp/t.sql"
`-h`: 指定MySQL服务器的主机名。`root`: 使用root用户登录。
`-P`: 指定MySQL服务器的端口号。
`-u`: 指定登录MySQL的用户名。
`db2`: 指定要导入数据的数据库名。
`-e`: 后面跟随要执行的命令。
`"source /client_tmp/t.sql"`: 执行source命令导入之前导出的SQL文件。
复制
代码
文件导入导出
导出为CSV文件
:
SELECT * FROM db1.t WHERE a > 900 INTO OUTFILE '/server_tmp/t.csv';
SELECT * FROM db1.t: 指定要导出的查询。
WHERE a > 900: 导出满足条件的数据。
INTO OUTFILE '/server_tmp/t.csv': 指定导出结果的CSV文件路径。
复制
代码
导入CSV文件到目标表
:
L
OA
D DATA INFILE '/server_tmp/t.csv' INTO TABLE db2.t;
L
OA
D DATA INFILE: 加载数据的命令。
'/server_tmp/t.csv': 指定CSV文件的路径。
INTO TABLE db2.t: 指定要导入数据的目标表。
复制代码
在MySQL中secure_file_priv用于限定L
OA
D DATA INFILE和SELECT ... INTO OUTFILE这两个命令天生或读取文件的位置。这个参数的目的是为了增强
安全
性,防止不测或恶意地读取或写入服务器上的敏感文件。
假如secure_file_priv被设置为空字符串('')或者NULL,则表示没有文件路径限定,可以利用任意文件路径。但是,这种设置降低了系统的
安全
性,因此不推荐在生产环境中利用。
物理拷贝表空间
物理拷贝表空间
:
首先创建一个相同结构的空表:
CREATE TABLE db2.r LIKE db1.t;
复制代码
然后丢弃表空间:
ALTER TABLE db2.r DISCARD TABLESPACE;
复制代码
导出表文件:
FLUSH TABLES db1.t FOR EXPORT;
复制代码
拷贝文件:
cp /path/to/db1/t.ibd /path/to/db2/r.ibd
cp /path/to/db1/t.cfg /path/to/db2/r.cfg
复制代码
解锁表并导入表空间:
UNLOCK TABLES;
ALTER TABLE db2.r IMPORT TABLESPACE;
复制代码
作者与
版本
更新计划
感谢您的阅读与支持!本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直策应用的宝贵知识。
现在
版本
为v1.0,更新时间2024年4月10日。后续此
文档
更新与版本
发布
会同步到知识星球【数舟】中。
知识整理与创作不易,感谢大家明白与支持!
参加知识星球,您将获得更多独家内容、专栏更新以及与行业内专家和偕行的互动交流时机。我们在知识星球等您,一起探索MySQL的深层次世界!
星球内现在包含300+佳构文章,内容涵盖大数据、MySQL、运维、Python、调优、履历分享、
数据分析
等方向内容,会根据大家的学习需求更新更多方向的内容。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
浏览过的版块
图数据库
开源技术
莫张周刘王
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表