MySQL基础day03_数据的导入、导出-MySQL 5.6

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

MySQL基础day03_数据的导入、导出-MySQL 5.6


注:把数据按照一定格式存放到文件里才能进行数据的导入。


1,数据导入的条件

把文件里的内容保存到数据的表里;

把数据按照一定格式存放文件里;

注:默认情况下,只有管理员才有权限导入数据!!!


将/etc/passwd文件里导入到userdb.user_tab表中:

格式:

load data  infile '文件名' into table  表名  fields  terminated by '分隔符' lines  terminated by \n';


示例:将/etc/passwd导入到userdb.user_tab表中

load data infile '/etc/passwd' into table userdb.user_tab fields terminated by ':' lines terminated by '\n';


2,数据导出

把表中的记录导出的系统文件里;


把userdb.user_tab表中的文件导出:

格式:

select *  from 导出的表名 into outfile '导出的文件名' fields terminated by '分隔符' lines  terminated by '\n';

select *  from 导出的表名 into outfile '/目录/文件名' fields terminated by '分隔符' lines terminated by '\n';

示例:

select *  from userdb.user_tab into outfile 'user.txt' fields terminated by '||' lines  terminated by '\n';

注:

使用导出文件名的时候,导出的文件在当前所在的数据库中,如果使用use切换到任何库,则导出到/var/lib/mysql目录下;

如果导出到/目录/文件名,则在建立目录的时候,需要先赋予其他用户w权限,并且关闭SELinux,否则导入时候将没有权限写入;

SELinux是控制的程序对文件的权限;

getenforce查看SELinux的状态;

setenforce 0/1来修改SELinux的状态;(1代表开启,0代表关闭);

SELinux的配置文件为/etc/sysconfig/selinux,如果修改为永久性关闭,需要将SELINUX字段设置为disable:SELINUX=disabled


示例:把系统文件/etc/passwd的内容保存到数据库服务器上的userdb库的user_tab表里

create  database userdb;


create table  userdb.user_tab(

name  varchar(30),

passwd  char(1) default 'x',

uid int(3)  not null,

gid int(3)  not null,

infor  varchar(30),

work  varchar(30),

home  varchar(15) not null default '/sbin/nologin'

index(username),

unique(uid)

);


测试插入一个一行值之后删除掉该段:

insert into  userdb.user_tab values('root','x',0,0,'root','/root','/bin/bash');

delete from  userdb.user_tab where name='root';


使用load导入:

load data  infile '/etc/passwd' into table userdb.user_tab fields terminated by ':'  lines terminated by '\n';


导出到user.txt:

select *  from userdb.user_tab into outfile 'user.txt' fields terminated by '||' lines  terminated by '\n';

注:导出的位置为当前数据库的目录,也就是/var/lib/mysql/数据库名目录下;

由于当前没有切换到任何目录,所以,会保存到/var/lib/mysql目录。


导出到/bakdb目录下:

[root@localhost  ~]# mkdir /bakdb

[root@localhost  ~]# chmod o+w /bakdb/       //将bakdb的所有者改为mysql也行

[root@localhost  ~]# ll -d /bakdb/

drwxr-xrwx. 2 root root 4096 3月  17 19:36 /bakdb/

[root@localhost  ~]# getenforce          //查看当前selinux的状态

Enforcing                //Enforcing为强制状态

[root@localhost  ~]# mysql -p

mysql> select * from userdb.user_tab into outfile  '/bakdb/user.txt' fields terminated by '$' lines terminated by '\n';                //尝试导出,由于selinux的原因,会有permission denied拒绝提示!!!

ERROR 1  (HY000): Can't create/write to file '/bakdb/user.txt' (Errcode: 13 - Permission denied)

mysql>  quit

Bye

[root@localhost  ~]# setenforce 0        //临时关闭selinux

[root@localhost  ~]# getenforce         //查看selinux的状态,permissive表示允许

Permissive

[root@localhost  ~]# vim /etc/sysconfig/selinux

[root@localhost  ~]# grep -vE "^#|^$" /etc/sysconfig/selinux

SELINUX=disabled

SELINUXTYPE=targeted

[root@localhost  ~]# mysql -p

mysql> select * from userdb.user_tab into outfile  '/bakdb/user.txt' fields terminated by '$' lines terminated by '\n';       //尝试导出,成功!!!

Query OK, 34  rows affected (0.00 sec)


mysql>  quit

Bye

[root@localhost  ~]# ll /bakdb/user.txt

-rw-rw-rw-.  1 mysql mysql 1725 3月  17 19:36 /bakdb/user.txt

[root@localhost  ~]#


小扩展:

selinux是限制进程对数据的权限

iptables是控制数据包的传输


总结:数据库信息导出时,不指定目录的情况下,默认到数据库目录内,当指定目录的时候,需要注意selinux权限,Redhat Enterprise 6版本的系统,默认都是开启的;

使用getenforce来查看selinux的状态;

setenforce 0/1来设置状态;

做的时候建议先使用setenforce 0关闭selinux;



本文转自 murongqingqqq  51CTO博客,原文链接:http://blog.51cto.com/murongqingqqq/1378318

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
18天前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
108 4
|
26天前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
2天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
14 6
|
2天前
|
关系型数据库 MySQL 数据处理
针对MySQL亿级数据的高效插入策略与性能优化技巧
在处理MySQL亿级数据的高效插入和性能优化时,以上提到的策略和技巧可以显著提升数据处理速度,减少系统负担,并保持数据的稳定性和一致性。正确实施这些策略需要深入理解MySQL的工作原理和业务需求,以便做出最适合的配置调整。
18 6
|
20天前
|
SQL 存储 缓存
MySQL是如何保证数据不丢失的?
文章详细阐述了InnoDB存储引擎中Buffer Pool与DML操作的关系。在执行插入、更新或删除操作时,InnoDB为了减少磁盘I/O,会在Buffer Pool中缓存数据页进行操作,随后将更新后的“脏页”刷新至磁盘。为防止服务宕机导致数据丢失,InnoDB采用了日志先行(WAL)机制,通过将DML操作记录为Redo Log并异步刷新到磁盘,结合双写机制和合理的日志刷新策略,确保数据的持久性和一致性。尽管如此,仍需合理配置参数以平衡性能与数据安全性。
MySQL是如何保证数据不丢失的?
|
22天前
|
关系型数据库 MySQL 大数据
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
|
30天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之ODPS数据怎么Merge到MySQL数据库
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
30天前
|
DataWorks 关系型数据库 MySQL
DataWorks产品使用合集之mysql节点如何插入数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
关系型数据库 MySQL 数据库
MySQL 复制A的表结构和数据到表B
在MySQL中复制表A至表B可通过不同方法实现。一种是先用`CREATE TABLE B LIKE A;`复制结构,再用`INSERT INTO B SELECT * FROM A;`填充数据。另一种更简便的方法是直接使用`CREATE TABLE B AS SELECT * FROM A;`一次性完成结构和数据的复制。还有一种高级方法是通过`SHOW CREATE TABLE A;`获取表A的创建语句,手动调整后创建表B,如有需要再用`INSERT INTO ... SELECT`复制数据。注意权限问题、跨数据库复制时需指定数据库名,以及大表复制时可能影响性能。