MySQL使用LOAD DATA INFILE方式导入文本文件

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客

《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-CSDN博客

使用mysqldump命令导出文本文件-CSDN博客

MySQL允许将数据导出到外部文件,也可以从外部文件导入数据。MySQL提供了一些导入数据的工具,包括LOAD DATA语句、source命令和mysql命令。LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并输入一张表中。文件名称必须为文字字符串。

LOAD DATA语句的基本格式如下:

复制代码
LOAD DATA  INFILE 'filename.txt' INTO TABLE tablename [OPTIONS] [IGNORE number LINES]

在LOAD DATA语句中,关键字INFILE后面的filename文件为导入数据的来源;tablename表示待导入的数据表名称;[OPTIONS]为可选参数选项,OPTIONS部分的语法包括FIELDS和LINES子句,其可能的取值有:

  • FIELDS TERMINATED BY 'value':设置字段之间的分隔字符,可以为单个或多个字符,默认情况下为"\t"。
  • FIELDS [OPTIONALLY] ENCLOSED BY 'value':设置字段的包围字符,只能为单个字符。如果使用了OPTIONALLY,则只有CHAR和VERCHAR等字符数据字段被包围。
  • FIELDS ESCAPED BY 'value':控制如何写入或读取特殊字符,只能为单个字符,即设置转义字符,默认值为"\"。
  • LINES STARTING BY 'value':设置每行数据开头的字符,可以为单个或多个字符,默认情况下不使用任何字符。
  • LINES TERMINATED BY 'value':设置每行数据结尾的字符,可以为单个或多个字符,默认值为"\n"。

IGNORE number LINES选项表示忽略文件开始处的行数,number表示忽略的行数。执行LOAD DATA语句需要FILE权限。

【例11.19】使用LOAD DATA语句将D:\person0.txt文件中的数据导入test_db数据库的person表中,SQL语句如下:

复制代码
LOAD DATA  INFILE 'D:\person0.txt' INTO TABLE test_db.person;

导入数据之前,要将person表中的数据全部删除,即登录MySQL,使用DELETE语句删除person表中的数据:

复制代码
mysql> USE test_db;
Database changed;
mysql> DELETE FROM person;
Query OK, 10 rows affected (0.00 sec)

从person0.txt文件中导入数据,SQL语句如下:

复制代码
mysql> LOAD DATA  INFILE 'D:\person0.txt' INTO TABLE test_db.person;
Query OK, 10 rows affected (0.00 sec)
Records: 10  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM person;
+----+---------+-----+-------------+
| id | name    | age | info        |
+----+---------+-----+-------------+
|  1 | Green   |  21 | Lawyer      |
|  2 | Suse    |  22 | dancer      |
|  3 | Mary    |  24 | Musician    |
|  4 | Willam  |  20 | sports man  |
|  5 | Laura   |  25 | NULL        |
|  6 | Evans   |  27 | secretary   |
|  7 | Dale    |  22 | cook        |
|  8 | Edison  |  28 | singer      |
|  9 | Harry   |  21 | magician    |
| 10 | Harriet |  19 | pianist     |
+----+---------+-----+-------------+

可以看到,语句执行成功之后,person0.txt文件中的数据导入person表中了。

【例11.20】使用LOAD DATA语句将D:\person1.txt文件中的数据导入test_db数据库中的person表中,使用FIELDS选项和LINES选项,要求字段之间使用","间隔,所有字段值用双引号括起来,定义转义字符为"\'",每行记录以"\r\n"结尾,SQL语句如下:

复制代码
LOAD DATA INFILE 'D:\person1.txt' INTO TABLE test_db.person
FIELDS 
TERMINATED BY ','
ENCLOSED BY '\"'
ESCAPED BY '\''
LINES 
TERMINATED BY '\r\n';

导入数据之前,使用DELETE语句将person表中的数据全部删除,执行过程如下:

复制代码
mysql> DELETE FROM person;
Query OK, 10 rows affected (0.00 sec)

从person1.txt文件中导入数据,执行过程如下:

复制代码
mysql> LOAD DATA  INFILE 'D:\person1.txt' INTO TABLE test_db   .person
    -> FIELDS
    -> TERMINATED BY ','
    -> ENCLOSED BY '\"'
    -> ESCAPED BY '\''
    -> LINES
    -> TERMINATED BY '\r\n';
Query OK, 10 rows affected (0.00 sec)
Records: 10  Deleted: 0  Skipped: 0  Warnings: 0

语句执行成功后,使用SELECT语句查看person表中的记录,结果与【例11.19】的相同。

相关推荐
岁岁种桃花儿5 小时前
MySQL从入门到精通系列:InnoDB记录存储结构
数据库·mysql
jiunian_cn6 小时前
【Redis】hash数据类型相关指令
数据库·redis·哈希算法
冉冰学姐7 小时前
SSM在线影评网站平台82ap4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·在线影评平台·影片分类
Exquisite.8 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
知识分享小能手8 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019数据库的操作(2)
数据库·学习·sqlserver
踩坑小念9 小时前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
萧曵 丶9 小时前
MySQL 语句书写顺序与执行顺序对比速记表
数据库·mysql
Wiktok10 小时前
MySQL的常用数据类型
数据库·mysql
曹牧10 小时前
Oracle 表闪回(Flashback Table)
数据库·oracle
J_liaty10 小时前
Redis 超详细入门教程:从零基础到实战精通
数据库·redis·缓存