Sqlldr导Excel文件导Oracle数据库

使用sqlldr把Excel导入Oracle数据库我总结为三个步骤:

        1.在Oracle数据库创建对应要导入数据的表,以及涉及到的列。

        2.在控制文件中,写入相关内容。

        3.Win+R打开命令行窗口,执行sqlldr命令。

当导入的数据不是很大时,如下所示:

1.(已存为csv文件),如下:

2.控制文件:

load data
infile 'e:\test.csv'
append into table test_order fields terminated by ',' 
trailing nullcols(
product_id, user_name ,phone_num, address ,order_date ,delivery_date)   
注意:当控制文件中的列不定义类型及大小时默认为char(255)

3.Win+R打开命令行窗口,执行命令。

查看Oracle数据库的内容:

csv实际数据7条,但实际插入数据6条,原因分析:

查看报错日志:

这里报错是因为在Oracle数据库建表时,各列的数据类型都不一样,而在控制文件里面把各列都默认为char类型的,当使用sqlldr导入数据时,会自动把控制文件的类型转换为与Oracle对应的数据类型,而在导入的scv文件的第一行,在控制文件重为char类型,在Oracle对应的可能为date类型,因不能成转换,所以报错。

解决办法:1.在Oracle数据库把所有的列东定义为varchar2类型。

                   2.把csv文件的第一行删了。 

当导入的数据,某一列对应的内容太大

该列超过了默认的255,则可以在其列后定义类型及大小,如下:(csv文件加入一行,Oracle对应增加一列)

Oracle:alter table test_order add introduction varchar2(600);

 控制文件:

load data
infile 'e:\test.csv'
append into table test_order fields terminated by ',' 
trailing nullcols(
product_id, user_name ,phone_num, address ,order_date ,delivery_date,introduction)

报错如下:

记录 4: 被拒绝 - 表 TEST_ORDER 的列 INTRODUCTION 出现错误。
数据文件的字段超出最大长度

更改控制文件:

load data
infile 'e:\test.csv'
append into table test_order fields terminated by ',' 
trailing nullcols(
product_id, user_name ,phone_num, address ,order_date ,delivery_date,introduction char(666))

运行结果:

查看表:

 对控制文件中的append,insert,replace的说明:

append:在表里追加内容,表可以不为空。

insert:在表里插入数据,表要为空,否则报错。

replace:把表里的覆盖,类似overwrite,表不为空,也不会报错。

即:控制文件

load data
infile 'e:\test.csv'
append/insert/replace into table test_order fields terminated by ',' 
trailing nullcols(
product_id, user_name ,phone_num, address ,order_date ,delivery_date,introduction char(666))

三种情况分别截图如下:

append:在表里追加内容,表可以不为空。

 insert:在表里插入数据,表要为空,否则报错。

replace:把表里的覆盖,类似overwrite,表不为空,也不会报错。

 想要获取关于更多sqlldr的知识,敬请期待。

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

啦啦啦~~~~~

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值