一、into outfile导出
1、语法:
select * from employees ORDER BY lname LIMIT 1000
INTO 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);