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

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;


本文出自 “森林博客” 博客,请务必保留此出处http://murongqingqqq.blog.51cto.com/2902694/1378318

MySQL基础day03_数据的导入、导出-MySQL 5.6,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。