mysql导入导出

数据导入导出

关键词:mysql导入导出

 

参考自:mysql从入门到精通

【1】最佳实践

-- 带上表头

select * into outfile 'e:/555.xlsx'  fields terminated by '\\t' OPTIONALLY ENCLOSED BY '"' lines terminated by '\\n' from (select '姓名','性别','年龄' union select username,sex,age from table) b;

-- 使用mysql导入

-- 1)SELECT... INTO OUTFILE导出文本文件

SELECT [列名] FROM table [WHERE 语句]
INTO OUTFILE '目标文件' [OPTION];

-- 2)mysqldump命令导出文本文件(会生成一个table_name.sql 文件 一个table_name.txt ,.sql文件存放表结构,.txt文件存放表数据)

mysqldump -u root -pPassword -T 目标目录 dbname table [option]

-- 3)使用mysql命令导出

mysql -u root -pPassword -e " SELECT语句“ dbname > C:/name.txt;

mysql -u root -pPassword --xml | -X -e " SELECT语句“ dbname > C:/name.xml;

mysql -u root -pPassword --html | -H -e " SELECT语句“ dbname > C:/name.html;


-- 4)使用LOAD DATA INFILE 方式导入文本文件

LOAD DATA [LOCAL] INFILE file INTO TABLE table [OPTION];
mysql -e "LOAD DATA INFILE '/data/tmp/test/1.txt' INTO TABLE test.q2;"
-- 5)使用mysqlimport命令导入文本文件 mysqlimport -u root -pPassword [-LOCAL] dbname file [OPTION]

 【2】格式说明

(2.1)以逗号为分隔符导入

登录mysql后,输入下面命令,注意,这个默认的目录是在 datadir;

load data infile '../dba/ods_054_game_recharge_record1.csv' into table test1 fields terminated by ',';

#看表字符集是什么,如果表是 latin1,而客户端是utf8则会报错,类似于下面
Invalid utf8 character string: '8'

#可以使用这种办法解决
load data infile '../dba/ods_054_game_recharge_record1.csv' into table test1  character set  latin1  fields terminated by ',';

 

 

 

(2.2)参数配置

建议:配置文件汇总

#查看配置,执行mysql命令
SHOW VARIABLES LIKE "secure_file_priv";

# 如果value值为null,则为禁止,如果有文件夹目录,则只允许改目录下文件(测试子目录也不行),如果为空,则不限制目录;
secure_file_priv = null 
# 禁用
secure_file_priv
= /home # 表示限制为/home文件夹 secure_file_priv = #(推荐)表示不限制目录,等号一定要有,否则mysql无法启动 # 修改完配置文件后,重启mysql生效

 

 

如果设置的不对,会有报错
说是设置了固定导出目录,只能使用该目录;
secure_auth 为启用开关;

 

 

2.有报错说不能读写
【1】修改文件目录权限给mysql启动用户
【2】查看一下SElinux是否关闭(SELINUX导致数据修改权限不成功


3.选项参数
导出结果如下:

 


选项参数:

 

 

posted @ 2019-03-04 16:48  郭大侠1  阅读(306)  评论(0编辑  收藏  举报