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.选项参数
导出结果如下:
选项参数: