小二郎初学SQL*Loader导入数据
调用SQL*LOADE,在windows系统中的命令行中输入“sqlldr",出现如下界面:
下面先创建一张空表,其实在创建数据库的时候可以同时创建,这里我重新
这个图上面部分,我第一次创建表的时候,一直出现了这个ORA-00907这个错误,提示的缺失右括号,我就一直在修改右括号,结果仔细看了下,才发现varchar2这个数据类型的名称搞错了,可见,细心是多么重要的一件事儿。
在C:\这个文件系统下用新建记事本文档,输入以下内容,然后另存为所有文件,格式选择.CTL,这就是控制文件的格式。
LOAD DATA
INFILE *
INTO TABLE BONUS
FIELDS TERMINATED BY ','
(ENAME,JOB,SAL)
BEGINDATA
SMITH,CLERK,3904
ALLEN,SALESMAN,2891
WARD,SALESMAN,3128
KING,PRESIDENT,2523
提示:在这里只是简单的演示,所以数据文件和控制文件在一起,所以INFILE后面用“*”,如果不在一起需要指明文件名称。
由于是在windows中演示,在命令行中输入:sqlldr 用户名/密码 control=控制文件(绝对地址)
其实,现在网上很多的介绍SQL*Loader用法的文章,博客园和知网论坛上的铺天盖地,但是可能因为这部分没什么技术含量,所以高手们很少介绍的面面俱到,就比如,一开始,这个control之后的控制文件,我一直以为只是名称,结果每次都提示“找不到控制文件”,上网看了资料之后,才知道必须要文件地址,这一点希望新手多加注意。
用scott用户登录之后,查看bonus表的记录,果然出现了我们导入的数据,在此成功!
下面演示数据和控制文件不在一起的情况:
新建记事本文档,输入以下内容:(直接加入界定符")
SMITH,CLERK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
保存为所有文件,格式为.csv,没错,就是我们常用的excel表格。
下面开始写控制文件:
LOAD DATA
INFILE 'D:\demo.csv' ——这里一定要带有地址,如果没有D:\,就找不到文件也一定要附带'',不然会报错:预测关键词为load,实际上是insert
TRUNCATE INTO TABLE BONUS
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' ——这里由于数据是以"分隔,所以写的时候就是'"',一定不要因为不好看加空格,否则就会出现错误文件,中间两行就不能导入
(ENAME,JOB,SAL)
由于不是在linux系统下操作,所以在网上看到的许多方法INFILE后面直接写的是文件名,control之后也是文件名,但是可以看到,之前都已经进入这些文件所在的文件位置中,所以不需要写文件地址,而在windows中,在命令提示符窗口中进行操作,必须要指明文件位置。

浙公网安备 33010602011771号