mysql load data 导出_mysql 导出数据 selet into outfile ,导入数据 load data infile

第一步 :设置文件

为了安全,配置导入导出的文件路径,导入导出的数据只允许放在该路径下

(1)在my.cnf  增加变量

secure_file_priv=/tmp/mysql_out_in_file

重启服务,使其生效

95afe1feb190dbce932d6e962ecf7353.png

(2)加权限

-- 修改所属用户 用户组

chown -R mysql:mysql mysql /tmp/mysql_out_in_file

-- 如果没有读写权限,请加上读写权限

-- 权限没有设置好,或导出路径不一致,则会报错

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statemen

c11ed4f1dcb098752cfdf396085383ce.png

(3)查看配置

show VARIABLES like '%secure_file_priv%'

f1dbc8396f7d8601548bf1389303cba4.png

第二步 :导出 select into outfile

(1)

mysql -u root -p

-- 输密码

use test;

-- 方式一

SELECT * FROMtest.demoINTO OUTFILE '/tmp/mysql_out_in_file/demo1.csv'FIELDS TERMINATEDBY ','OPTIONALLY ENCLOSEDBY '"'LINES TERMINATEDBY '\n';

-- 这样导出的数据,没有表头列名

-- 方式二

select * into outfile '/tmp/mysql_out_in_file/demo6.csv' -- 导出文件的存放路径fields terminatedby ',' -- 字段','(逗号)分割,optionally enclosedby '"' -- 字段以双引号括起来,lines terminatedby '\n' -- 换行符

from(select

'master_id','dd_date','seq_num','matched_rule_id','tran_amt1','alert_date' -- 拼表头

union(SELECTmaster_id,dd_date,seq_num,matched_rule_id,tran_amt1,alert_date -- 查询数据from test.demo limit 2000)

) ddd

-- 自己拼接表名

-- 注意点:select 后面查询的字段,必须包含主键所有字段,否则,导出的数据会缺失。

(2) 查看文件

执行完毕之后,目录已经有该文件

f8cc43c6666785eed455c4ff09403844.png

4e688eb00544306bc91f2ac1bd30e0b3.png

第三步  使用LOAD DATA INFILE 导入到另外一个表

先连接mysql

[root@localhost bin]# mysql -u root -p

如果字段包括时间字段,所有的时间字段都有值,正常导入,与源数据一致。

但如果时间字段为null, 则导入的数据会出现很多情况。

比如  dd_date 字段定义如下

"dd_date" timestamp(2) NOT NULL DEFAULT '0000-00-00 00:00:00.00'

demo6.csv ,该字段为空 null

d14b8c3233a0346765323da9eff58e6b.png

第①种方式

LOAD DATA INFILE '/tmp/mysql_out_in_file/demo6.csv' INTO TABLEtest.demo_into

FIELDS TERMINATEDBY ','OPTIONALLY ENCLOSEDBY '"'LINES TERMINATEDBY '\n'IGNORE1lines -- 忽略首行

(master_id,dd_date,seq_num,matched_rule_id,tran_amt1,alert_date) -- 字段顺序与 文本demo6.csv 一致,调换字段顺序,意义不大

查看结果

8f5941cdcc0e8fc4d1636b8eb949f1a4.png

第②种方式

dd_data  设置为null

LOAD DATA INFILE '/tmp/mysql_out_in_file/demo6.csv' INTO TABLEtest.demo_into

FIELDS TERMINATEDBY ','OPTIONALLY ENCLOSEDBY '"'LINES TERMINATEDBY '\n'IGNORE1lines

(master_id,@re,seq_num,matched_rule_id,tran_amt1,alert_date) -- @re 设置

查看结果

9e891c53810d9875ad12baf09d4d626b.png

第③种  设置值

LOAD DATA INFILE '/tmp/mysql_out_in_file/demo6.csv' INTO TABLEtest.demo_into

FIELDS TERMINATEDBY ','OPTIONALLY ENCLOSEDBY '"'LINES TERMINATEDBY '\n'IGNORE1lines

(master_id,dd_date,seq_num,matched_rule_id,tran_amt1,alert_date)set dd_date = '1999-09-09 01:02:04'

-- 此方法,根据目前的测试,如果是100个字段,此方法,没有生效

查看结果

1a06a9bce6f4d82e3ff04ed642621097.png

end

[root@commonTest bin]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 7

Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> LOAD DATA INFILE '/data/backup/test.txt' INTO TABLE  demo.test  \

-> FIELDS TERMINATED BY ','      \

-> OPTIONALLY ENCLOSED BY '"'    \

-> LINES TERMINATED BY '\n' ;

Query OK, 2 rows affected (0.00 sec)

Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值