MySQL讲义第 37 讲——LOAD DATA INFILE 命令

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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睿思达DBA_WGX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值