MySQL讲义第 37 讲——LOAD DATA INFILE 命令
文章目录
LOAD DATA INFILE 命令可以结合 SELECT 命令的 INTO OUTFILE 参数完成查询数据的导出和导入。
一、LOAD DATA INFILE 命令的格式
LOAD DATA INFILE 命令的格式如下:
LOAD DATA [LOCAL] INFILE 'file_name'
INTO TABLE tbl_name
FIELDS TERMINATED BY 'char';
-- 说明:
(1)使用 FIELDS TERMINATED BY 参数根据文件中各个字段的数据之间的分隔符指定相应的分隔符;当使用 tab 分隔字段的数据时,该参数可以省略。
(2)在非服务端执行 LOAD DATA 时需要使用 LOCAL 参数。比如通过 B 机器登录 A 上的 MySQL。
二、LOAD DATA INFILE 命令应用举例
1、文本文件中各个字段的数据之间分隔符为 tab 键
(1)导出数据
mysql> SELECT
-> company_id,
-> company_abbreviation,
-> company_fullname
-> FROM
-> company_information
-> WHERE
-> company_abbreviation REGEXP '地产$'
-> INTO OUTFILE
-> '/tmp/mysql-bak/company_information_bak02011.txt';
Query OK, 12 rows affected (0.00 sec)
(2)查看文本文件的内容
[root@oracle-rac2 mysql-bak]# cat company_information_bak02011.txt
000031 中粮地产 中粮地产(集团)股份有限公司
000043 中航地产 中航地产股份有限公司
000517 荣安地产 荣安地产股份有限公司
000736 中房地产 中房地产股份有限公司
600048 保利地产 保利房地产(集团)股份有限公司
600159 大龙地产 北京市大龙伟业房地产开发股份有限公司
600173 卧龙地产 卧龙地产集团股份有限公司
600185 格力地产 格力地产股份有限公司
600246 万通地产 北京万通地产股份有限公司
600657 信达地产 信达地产股份有限公司
600708 光明地产 光明房地产集团股份有限公司
600743 华远地产 华远地产股份有限公司
(3)创建一张表 company,包含三个字段,分别为:id,name,full_name
mysql> desc company;
+-----------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-----------+------+-----+---------+-------+
| id | char(6) | NO | PRI | NULL | |
| name | char(20) | YES | | NULL | |
| full_name | char(100) | YES | | NULL | |
+-----------+-----------+------+-----+---------+-------+
3 rows in set (0.00 sec)
(4)使用 LOAD DATA INFILE 命令导入数据
mysql> LOAD DATA LOCAL INFILE '/tmp/mysql-bak/company_information_bak02011.txt'
-> INTO TABLE company;
Query OK, 12 rows affected (0.00 sec)
Records: 12 Deleted: 0 Skipped: 0 Warnings: 0
(5)查看结果
mysql> SELECT * FROM company;
+--------+--------------+--------------------------------------------------------+
| id | name | full_name |
+--------+--------------+--------------------------------------------------------+
| 000031 | 中粮地产 | 中粮地产(集团)股份有限公司 |
| 000043 | 中航地产 | 中航地产股份有限公司 |
| 000517 | 荣安地产 | 荣安地产股份有限公司 |
| 000736 | 中房地产 | 中房地产股份有限公司 |
| 600048 | 保利地产 | 保利房地产(集团)股份有限公司 |
| 600159 | 大龙地产 | 北京市大龙伟业房地产开发股份有限公司 |
| 600173 | 卧龙地产 | 卧龙地产集团股份有限公司 |
| 600185 | 格力地产 | 格力地产股份有限公司 |
| 600246 | 万通地产 | 北京万通地产股份有限公司 |
| 600657 | 信达地产 | 信达地产股份有限公司 |
| 600708 | 光明地产 | 光明房地产集团股份有限公司 |
| 600743 | 华远地产 | 华远地产股份有限公司 |
+--------+--------------+--------------------------------------------------------+
12 rows in set (0.00 sec)
2、文本文件中各个字段的数据之间为其它分隔符
(1)导出时使用逗号(,)作为字段的分隔符
mysql> SELECT
-> company_id,
-> company_abbreviation,
-> company_fullname
-> FROM
-> company_information
-> WHERE
-> company_abbreviation REGEXP '银行$'
-> INTO OUTFILE
-> '/tmp/mysql-bak/company_information_bak02012.txt'
-> FIELDS TERMINATED BY ',';
Query OK, 24 rows affected (0.01 sec)
(2)查看文本文件的内容
[root@oracle-rac2 mysql-bak]# cat company_information_bak02012.txt
000001,平安银行,平安银行股份有限公司
002142,宁波银行,宁波银行股份有限公司
002807,江阴银行,江苏江阴农村商业银行股份有限公司
600000,浦发银行,上海浦东发展银行股份有限公司
600015,华夏银行,华夏银行股份有限公司
600016,民生银行,中国民生银行股份有限公司
600036,招商银行,招商银行股份有限公司
600908,无锡银行,无锡农村商业银行股份有限公司
600919,江苏银行,江苏银行股份有限公司
600926,杭州银行,杭州银行股份有限公司
601009,南京银行,南京银行股份有限公司
601128,常熟银行,江苏常熟农村商业银行股份有限公司
601166,兴业银行,兴业银行股份有限公司
601169,北京银行,北京银行股份有限公司
601229,上海银行,上海银行股份有限公司
601288,农业银行,中国农业银行股份有限公司
601328,交通银行,交通银行股份有限公司
601398,工商银行,中国工商银行股份有限公司
601818,光大银行,中国光大银行股份有限公司
601939,建设银行,中国建设银行股份有限公司
601988,中国银行,中国银行股份有限公司
601997,贵阳银行,贵阳银行股份有限公司
601998,中信银行,中信银行股份有限公司
603323,吴江银行,江苏吴江农村商业银行股份有限公司
(3)清空 company 表
mysql> truncate table company;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from company;
Empty set (0.00 sec)
(4)使用 LOAD DATA INFILE 命令导入数据
mysql> LOAD DATA LOCAL INFILE '/tmp/mysql-bak/company_information_bak02012.txt'
-> INTO TABLE company
-> FIELDS TERMINATED BY ',';
Query OK, 24 rows affected (0.00 sec)
Records: 24 Deleted: 0 Skipped: 0 Warnings: 0
(5)查看结果
mysql> SELECT * FROM company;
+--------+--------------+--------------------------------------------------+
| id | name | full_name |
+--------+--------------+--------------------------------------------------+
| 000001 | 平安银行 | 平安银行股份有限公司 |
| 002142 | 宁波银行 | 宁波银行股份有限公司 |
| 002807 | 江阴银行 | 江苏江阴农村商业银行股份有限公司 |
| 600000 | 浦发银行 | 上海浦东发展银行股份有限公司 |
| 600015 | 华夏银行 | 华夏银行股份有限公司 |
| 600016 | 民生银行 | 中国民生银行股份有限公司 |
| 600036 | 招商银行 | 招商银行股份有限公司 |
| 600908 | 无锡银行 | 无锡农村商业银行股份有限公司 |
| 600919 | 江苏银行 | 江苏银行股份有限公司 |
| 600926 | 杭州银行 | 杭州银行股份有限公司 |
| 601009 | 南京银行 | 南京银行股份有限公司 |
| 601128 | 常熟银行 | 江苏常熟农村商业银行股份有限公司 |
| 601166 | 兴业银行 | 兴业银行股份有限公司 |
| 601169 | 北京银行 | 北京银行股份有限公司 |
| 601229 | 上海银行 | 上海银行股份有限公司 |
| 601288 | 农业银行 | 中国农业银行股份有限公司 |
| 601328 | 交通银行 | 交通银行股份有限公司 |
| 601398 | 工商银行 | 中国工商银行股份有限公司 |
| 601818 | 光大银行 | 中国光大银行股份有限公司 |
| 601939 | 建设银行 | 中国建设银行股份有限公司 |
| 601988 | 中国银行 | 中国银行股份有限公司 |
| 601997 | 贵阳银行 | 贵阳银行股份有限公司 |
| 601998 | 中信银行 | 中信银行股份有限公司 |
| 603323 | 吴江银行 | 江苏吴江农村商业银行股份有限公司 |
+--------+--------------+--------------------------------------------------+
24 rows in set (0.00 sec)