oracle数据库sqlldr命令的使用

 将数据导入 oracle 的方法应该很多 , 对于不同需求有不同的导入方式 , 最近使用oracle的sqlldr命令 导入数据库数据感觉是个挺不错的技术点 。  使用sqlldr命令 将文本文件导入 oracle中大致需要两步 :

第一步:编写ctl控制文件

Load data --装载数据(第二步中会具体讲一下数据文件的来源位置)

CHARACTERSET 'UFT8' --导入字符集格式
Append --这个属性意思是在数据库中原来数据基础上追加自己的数据,不改变原来的数据,有兴趣的还可以了解其他属性replace等
into table int_demo_student_b --插入数据库所对应得表
fields terminated by X'1B' --分隔符,用于分割数据文件中对应属性数据的分割符号 我用的是ESC键分割 ,还有 X'09' 等于逗号分割
TRAILING NULLCOLS --空列赋值,如果不加这个属性,当数据文件中有空值时,就会跳过空值,这样导入的数据就出现错位了,所以加了这个属性就可以避免空值错位
(
stu_id, --字段,字段的顺序和数据库的顺序一致
stu_name,
stu_class,
stu_age,
stu_sex,
stu_subject,
comment char(260), --截位操作,在做导入的时候,ctl导入属于文件流导入,当字段字符长度超过255位就会导入失败,如果这样就需要加这个属性来约束就不会导入失败了
import_flag constant "0", --默认赋值,如果原来数据文件中没有的字段,而自己需要在自己数据库表中增加某个字段,就需要添加默认值constant
err_msg constant " "
)

第二步:使用cmd命令窗口中输入命令sqlldr命令运行 最后按下回车键

   ->  sqlldr  userid = 用户名 / 密码 @ 数据库名  data=数据文件地址   control = ctl控制文件地址     bad = D:/ bad.bad 错误日志   log =D:/log.log 日志记录

还可以在命令中输入rows deirect silent errors等属性来限制导入的行数等其他条件,有兴趣的可以自己了解下

  

目前地址数据都是固定的,在实际应用一般都会通过定义变量来使用,这样可以重复使用。

猜你喜欢

转载自www.cnblogs.com/chch213/p/9028484.html