返回介绍

3 使用 SQL 叙述汇入资料

发布于 2025-02-20 13:00:33 字数 3066 浏览 0 评论 0 收藏 0

“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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文