一、into outfile导出
1、语法:
select * from employees ORDER BY lname LIMIT 1000INTO OUTFILE '/tmp/employee_data_1.txt'FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY '\'LINES TERMINATED BY '\n';
FIELDS TERMINATED BY 表示列分隔符
[OPTIONALLY] ENCLOSED 表示列用什么字符包括起来,如果使用了OPTIONALLY则只有CHAR和VERCHAR被包括
ESCAPED 表示当需要转义时用什么作为转义字符
LINES TERMINATED 表示每行记录之间用什么分隔2、#查看导出路径
(root@localhost) [(none)]> show variables like 'secure_file_priv';
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+3、导出
(root@localhost) [test]> select * from a into outfile '/var/lib/mysql-files/a.txt';
Query OK, 2 rows affected (0.00 sec)4、导出执定的列
(root@localhost) [test]> select 列1,列2 from a into outfile '/var/lib/mysql-files/a.txt';5、导出指定数据
(root@localhost) [test]> select * from a where id > 1000 into outfile '/var/lib/mysql-files/a.txt';
二、load data 导入
1、语法:
LOAD DATA [LOCAL] INFILE '文件路径'[REPLACE | IGNORE]INTO TABLE 表名[FIELDS[TERMINATED BY '分隔符'][ENCLOSED BY '包围符'][ESCAPED BY '转义符']][LINES[STARTING BY '开始符'][TERMINATED BY '结束符']][IGNORE number LINES][(字段1, 字段2, ..., 字段n)]
LOCAL:使用LOCAL关键字可以将数据文件从客户端机器上加载到服务器上。如果不指定该选项,默认从服务器的文件系统加载文件。REPLACE:使用REPLACE关键字可以替换表中已有的数据。如果数据文件中的某条记录与表中的某条记录主键冲突,将会替换表中的记录。IGNORE:使用IGNORE关键字可以忽略数据文件中与表中已有记录主键冲突的记录。FIELDS子句:用于指定字段的分隔符、包围符和转义符。LINES子句:用于指定行的开始符和结束符。IGNORE number LINES:用于指定忽略数据文件开头的几行。(root@localhost) [test]> create table b like a;
Query OK, 0 rows affected (0.01 sec)(root@localhost) [test]> load data infile '/var/lib/mysql-files/a.txt' into table b;
Query OK, 2 rows affected (0.00 sec)Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
如果导出的数据只有两列,导入是想导入3列可以使用,用的不多
(root@localhost) [test]> load data infile '/var/lib/mysql-files/a.txt' into table b FIELDS TERMINATED BY ',' (a,b) -> set c=(a+b);