小二郎初学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中,在命令提示符窗口中进行操作,必须要指明文件位置。

posted @ 2013-04-26 19:23  oracle小二郎  阅读(290)  评论(0)    收藏  举报