3 使用 SQL 叙述汇入资料
“LOAD DATA”叙述可以汇入资料到数据库的某个表格中,“LOAD DATA”叙述提供许多子句,可以让你设定资料档案、档案的格式,或是汇入资料的处理。下列是它的语法:
3.1 指定资料档案
“LOAD DATA”叙述可以将一个包含资料的档案,汇入到一个指定的表格中,下列是它的基本语法:
使用“LOAD DATA”叙述汇入资料前,要明确的指定数据库:
如果你的资料档案放在用户端的电脑中,在使用“LOAD DATA”叙述时要加入“LOCAL”关键字。指定资料档案时,可以包含磁盘机代号、资料夹与档案名称:
指定的资料档案如果没有磁盘机代号,可是包含资料夹与档案名称,MySQL 会使用目前工作中的磁盘机:
指定的资料档案没有磁盘机代号,只有资料夹与档案名称,可是最前面没有资料夹符号,MySQL 会使用目前工作中的资料夹:
指定的资料档案只有档案名称,MySQL 会使用目前工作中的资料夹:
如果你的资料档案放在服务器的电脑中,在使用“LOAD DATA”叙述时就不要使用“LOCAL”关键字。指定资料档案时,可以包含磁盘机代号、资料夹与档案名称:
指定的资料档案如果没有磁盘机代号,可是包含资料夹与档案名称,MySQL 会使用服务器的磁盘机:
指定的资料档案没有磁盘机代号,只有资料夹与档案名称,可是最前面没有资料夹符号,MySQL 会使用
数据库资料夹:
指定的资料档案只有档案名称,而且在“INTO TABLE”中指定数据库名称,MySQL 会使用数据库资料夹的数据库名称:
指定的资料档案只有档案名称,在执行“LOAD DATA INFILE”叙述前先使用“USE”叙述指定数据库,而且在“INTO TABLE”中没有指定数据库名称,MySQL 会使用数据库资料夹的目前使用中数据库名称:
注:使用“SHOW VARIABLES LIKE ‘datadir’”叙述,可以查询 MySQL 数据库服务器使用的数据库资料夹。
3.2 设定资料格式
如果没有另外设定的话,使用“LOAD DATA INFILE”叙述汇入的资料档案,MySQL 会使用下列的格式:
如果你的资料档案格式跟上列的档案一样的话,使用下列的计就可以汇入资料:
如果要汇入资料的档案是“CSV”格式的话,就要使用“FIELDS”与“LINES”子句设定格式:
3.3 处理汇入的资料
如果汇入的资料档案与表格完全对应的话,“LOAD DATA INFILE”叙述都可以把资料正确的汇入到数据库中。可是以下列储存在资料档案中的部门资料来说:
因为“cmdev.dept”表格有“deptno”、“dname”与“location”三个字段,所以执行下列的“LOAD DATA INFILE”叙述就会产生错误:
你可以在“LOAD DATA INFILE”叙述中,指定汇入资料的数量和字段:
下列的“LOAD DATA INFILE”叙述指定汇入资料时会跳过第一笔,而且指定汇入的字段只有“deptno”与“dname”两个字段:
你也可以在“LOAD DATA INFILE”叙述中加入使用者变量:
下列的叙述将“ename”与“job”两个字段的资料先转换大写后,再汇入到数据库中:
3.4 索引键重复
在新增、修改或汇入资料到数据库的时候,都有可能发生索引值重复的错误,在使用“LOAD DATA INFILE”汇入资料的时候,如果发生索引值重复的情况,你可以使用“IGNORE”或“REPLACE”来决定数据库该作什么处理:
以部门资料表来说,部门编号已经设定为主索引键,所以它是不可以重复的:
如果资料档储存在 MySQL 服务器的电脑中,在汇入资料时没有使用“IGNORE”或“REPLACE”,发生索引重复的情况时,数据库会产生错误讯息,而且不会汇入任何资料:
资料档储存在 MySQL 服务器的电脑中时,你可以使用“IGNORE”关键字忽略错误的资料,正确的资料还是汇入到数据库中;使用“REPLACE”关键字请数据库会帮你执行修改资料的动作:
下列的“LOAD DATA INFILE”叙述中使用“IGNORE”关键字汇入资料时,处理索引重复资料的效果:
下列的“LOAD DATA INFILE”叙述中使用“REPLACE”关键字汇入资料时,处理索引重复资料的效果:
资料档储存在用户端的电脑中时,处理汇入资料发生索引重复的作法会不太一样:
使用“REPLACE”关键字的时候,效果就跟资料档储存在 MySQL 服务器的电脑中时一样:
3.5 汇入资讯
在执行汇入资料的叙述以后,你应该会想要知道有多少资料汇入到数据库中。如果你在“MySQL Query Browser”工具中执行“LOAD DATA INFILE”叙述的话,它会告诉你总共影响了几笔资料,包含新增与修改:
如果你在命令提示字符中执行“LOAD DATA INFILE”叙述的话,除了影响的资料数量以外,还会告诉你比较完整的汇入资讯:
在上列的资讯中:
- Records:表示从资料档案中读取的资料数量
- Deleted:表示在发生索引重复的情况下更新资料的数量
- Skipped:表示在发生索引重复的情况下被忽略的资料数量
- Warnings:表示资料档案中有问题的资料数量,例如转换 Hello 字串为数值
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论