暂无 |

3 使用SQL叙述汇入资料

「LOAD DATA」叙述可以汇入资料到资料库的某个表格中,「LOAD DATA」叙述提供许多子句,可以让你设定资料档案、档案的格式,或是汇入资料的处理。下列是它的语法:

mysql_19_snap_10

3.1 指定资料档案

「LOAD DATA」叙述可以将一个包含资料的档案,汇入到一个指定的表格中,下列是它的基本语法:

mysql_19_snap_11

使用「LOAD DATA」叙述汇入资料前,要明确的指定资料库:

mysql_19_snap_12

如果你的资料​​档案放在用户端的电脑中,在使用「LOAD DATA」叙述时要加入「LOCAL」关键字。指定资料档案时,可以包含磁碟机代号、资料夹与档案名称:

mysql_19_snap_13

指定的资料档案如果没有磁碟机代号,可是包含资料夹与档案名称,MySQL会使用目前工作中的磁碟机:

mysql_19_snap_14

指定的资料档案没有磁碟机代号,只有资料夹与档案名称,可是最前面没有资料夹符号,MySQL会使用目前工作中的资料夹:

mysql_19_snap_15

指定的资料档案只有档案名称,MySQL会使用目前工作中的资料夹:

mysql_19_snap_16

如果你的资料​​档案放在伺服器的电脑中,在使用「LOAD DATA」叙述时就不要使用「LOCAL」关键字。指定资料档案时,可以包含磁碟机代号、资料夹与档案名称:

mysql_19_snap_17

指定的资料档案如果没有磁碟机代号,可是包含资料夹与档案名称,MySQL会使用伺服器的磁碟机:

mysql_19_snap_18

指定的资料档案没有磁碟机代号,只有资料夹与档案名称,可是最前面没有资料夹符号,MySQL会使用
资料库资料夹:

mysql_19_snap_19

指定的资料档案只有档案名称,而且在「INTO TABLE」中指定资料库名称,MySQL会使用资料库资料夹的资料库名称:

mysql_19_snap_20

指定的资料档案只有档案名称,在执行「LOAD DATA INFILE」叙述前先使用「USE」叙述指定资料库,而且在「INTO TABLE」中没有指定资料库名称,MySQL会使用资料库资料夹的目前使用中资料库名称:

mysql_19_snap_21

注:使用「SHOW VARIABLES LIKE 'datadir'」叙述,可以查询MySQL资料库伺服器使用的资料库资料夹。

3.2 设定资料格式

如果没有另外设定的话,使用「LOAD DATA INFILE」叙述汇入的资料档案,MySQL会使用下列的格式:

mysql_19_snap_22

如果你的资料​​档案格式跟上列的档案一样的话,使用下列的计就可以汇入资料:

mysql_19_snap_23

如果要汇入资料的档案是「CSV」格式的话,就要使用「FIELDS」与「LINES」子句设定格式:

mysql_19_snap_24

3.3 处理汇入的资料

如果汇入的资料档案与表格完全对应的话,「LOAD DATA INFILE」叙述都可以把资料正确的汇入到资料库中。可是以下列储存在资料档案中的部门资料来说:

mysql_19_snap_25

因为「cmdev.dept」表格有「deptno」、「dname」与「location」三个栏位,所以执行下列的「LOAD DATA INFILE」叙述就会产生错误:

mysql_19_snap_26

你可以在「LOAD DATA INFILE」叙述中,指定汇入资料的数量和栏位:

mysql_19_snap_27

下列的「LOAD DATA INFILE」叙述指定汇入资料时会跳过第一笔,而且指定汇入的栏位只有「deptno」与「dname」两个栏位:

mysql_19_snap_28

你也可以在「LOAD DATA INFILE」叙述中加入使用者变数:

mysql_19_snap_29

下列的叙述将「ename」与「job」两个栏位的资料先转换大写后,再汇入到资料库中:

mysql_19_snap_30

3.4 索引键重复

在新增、修改或汇入资料到资料库的时候,都有可能发生索引值重复的错误,在使用「LOAD DATA INFILE」汇入资料的时候,如果发生索引值重复的情况,你可以使用「 IGNORE」或「REPLACE」来决定资料库该作什么处理:

mysql_19_snap_31

以部门资料表来说,部门编号已经设定为主索引键,所以它是不可以重复的:

mysql_19_snap_32

如果资料档储存在MySQL伺服器的电脑中,在汇入资料时没有使用「IGNORE」或「REPLACE」,发生索引重复的情况时,资料库会产生错误讯息,而且不会汇入任何资料:

mysql_19_snap_33

资料档储存在MySQL伺服器的电脑中时,你可以使用「IGNORE」关键字忽略错误的资料,正确的资料还是汇入到资料库中;使用「REPLACE」关键字请资料库会帮你执行修改资料的动作:

mysql_19_snap_34

下列的「LOAD DATA INFILE」叙述中使用「IGNORE」关键字汇入资料时,处理索引重复资料的效果:

mysql_19_snap_35

下列的「LOAD DATA INFILE」叙述中使用「REPLACE」关键字汇入资料时,处理索引重复资料的效果:

mysql_19_snap_36

资料档储存在用户端的电脑中时,处理汇入资料发生索引重复的作法会不太一样:

mysql_19_snap_37

使用「REPLACE」关键字的时候,效果就跟资料档储存在MySQL伺服器的电脑中时一样:

mysql_19_snap_38

3.5 汇入资讯

在执行汇入资料的叙述以后,你应该会想要知道有多少资料汇入到资料库中。如果你在「MySQL Query Browser」工具中执行「LOAD DATA INFILE」叙述的话,它会告诉你总共影响了几笔资料,包含新增与修改:

mysql_19_snap_39

如果你在命令提示字元中执行「LOAD DATA INFILE」叙述的话,除了影响的资料数量以外,还会告诉你比较完整的汇入资讯:

mysql_19_snap_40

在上列的资讯中:

  • Records:表示从资料档案中读取的资料数量
  • Deleted:表示在发生索引重复的情况下更新资料的数量
  • Skipped:表示在发生索引重复的情况下被忽略的资料数量
  • Warnings:表示资料档案中有问题的资料数量,例如转换Hello字串为数值
java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论