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是数据文件。

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





