记一次工作中SQLLDR的用法

本文介绍了如何使用SQL*Loader将CSV数据文件批量导入Oracle数据库,详细讲解了CTL文件的配置,包括字符集设定、字段长度指定、日期格式转换等关键点,并提到了命令行执行时的注意事项。

SQLLDR是什么?

SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件(数据)迁移到ORACLE数据库中。我这里使用了sqlldr将大量的数据迁移到了公司的Oracle数据库。

背景

现在有几十个csv数据文件需要导入到远程数据库,数据格式是这样的:

数据1|数据2|数据3

准备

1、csv文件(或者是其他格式的文件,如txt)
2、ctl文件,文件内容:

OPTIONS (skip=0)
LOAD DATA
CHARACTERSET ‘ZHS16GBK’
INFILE “C:\Users\Shinelon\Desktop\养老险数据\fdl_0505_ttxzb.csv”
append
INTO TABLE D0505_TTXZB
Fields terminated by “|”
trailing nullcols
(
字段名1,
字段名2,
字段名3 “to_date(:字段名3,‘YYYY-MM-DD hh:mm:ss’)”,
字段名4 char(1000),

)

3、执行命令,如:

sqlldr userid=cat/cat@127.0.0.1:1521/abc control=F:\History\csv\D0505_TTXZB.ctl log=C:\Users\Shinelon\Desktop\basy-new.log data=C:\Users\Shinelon\Desktop\养老险数据\fdl_0505_ttxzb.csv

注意

一、ctl文件要注意的地方:

1、CHARACTERSET 'ZHS16GBK’表示设置源数据的字符集,此处是为和Oracle字符集保持一致。共4个地方的字符集需要统一,全部是GBK或者全部是UTF-8,如:

操作系统 ==== 936(表示GBK123)
Oracle ==== ZHS16GBK
ctl文件 ==== 加上上述设置字符集的代码
数据文件 ==== GBK123

至于怎么查看和设置,暂时没空记录了,不懂可以直接百度,知道的欢迎在评论区留言补充,非常感谢。
2、普通的字段可以直接与ctl文件默认支持的长度是256,如果有表里面有大字段,或者是源数据对应某个字段的值超过此长度,可以在ctl文件中指定长度,如char(1000);

3、要导入的数据表里面有日期格式,而数据是字符串,此时也需要在ctl文件中作转换。函数外面要加上双引号,括号里面的字段名前面有冒号,数据日期格式是否有时分秒,这都是不能忽略的。

4、除了字符集和对应字段的数据格式,还有几个地方:
(1)数据分割符是否是"|";
(2)数据文件的路径;
(3)要导入的表的名字。

二、命令注意的地方:

1、命令是cmd的命令;
2、userid后面的值的格式:用户名/密码数据库ip:端口/实例名;
3、log后面的值是命令执行生成的日志文件;
4、data是数据文件。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值