数据表:
CREATE TABLE "CARDV2"."TBL_VERSION"
("ID" NUMBER(20,0) NOT NULL ENABLE,
"VERSION" VARCHAR2(500 BYTE),
"CREATEDATE" DATE NOT NULL ENABLE,
"NUM" NUMBER(10,0),
"CITY" VARCHAR2(20 BYTE),
"DES" VARCHAR2(100 BYTE),
CONSTRAINT "TBL_VERSION_PK" PRIMARY KEY ("ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
TABLESPACE "USER_DATA" ENABLE
) SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
TABLESPACE "USER_DATA" ;
控制文件:
TBL_VERSION.ctl
load
append into table CARDV2.TBL_VERSION
fields terminated by ","
trailing nullcols
(
ID "cardv2.SEQ_VERSION.nextval",
VERSION
char(500)
,
CREATEDATE "sysdate",
NUM,
CITY,
DES
)
说明:
fields terminated by "," :字段间以逗号分隔
trailing nullcols :如要导入源文件此列内容为空,在导入到数据库表时,此列内容就是null
ID "cardv2.SEQ_VERSION.nextval" : 此例用序列值替换
CREATEDATE "sysdate" : 此例用sysdata替换
字段格式为:字段名称 字段类型(可以不写) “字段值”(引号扩起来)
比如:
CREATEDATE "sysdate" ==》
CREATEDATE date "sysdate",
如果数据文件中已经明确给出日期的值,比如2015-01-01,则可以修改控制文件
CREATEDATE date "yyyy-mm-dd",此时date类型必须明确给出,
如果不想使用类型,也可以通过函数的方式实现,CREATEDATE "to_date(:createdate,'yyyy-mm-dd')"
csv数据文件:
TBL_VERSION.data
1,1.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,0,BEIJING,desc1
1,2.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,,,
desc2
1,3.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,1,BEIJING,
desc3
1,4.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,0,,
desc4
1,5.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,0,SHANGHAI,desc5
1,6.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,0,,desc6
1,7.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,0,,desc7
1,8.0.2.30.45#2.36.10.25#1.25.36.85,sysdate,0,,desc8
导入命令:
sqlldr cardv2/password@oracle control=./TBL_VERSION.ctl data=./TBL_VERSION.data log=./TBL_VERSION.log bad=./TBL_VERSION.bad errors=1000
参数说明:
control - 控制文件
log - 记录的日志文件
bad - 坏数据文件,记录错误的未加载数据
data - 数据文件
errors - 允许的错误记录数,超过则终止任务 (默认50)
相关参数说明可参考:http://dbua.iteye.com/blog/1570018
另,Oracle 导出导入数据参考:
http://www.cnblogs.com/muliang/archive/2013/08/04/3237216.html
补充:
1.导入文件中如果包含中文,可能会出现乱码问题,需要在环境变量中配置字符集:
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
2.数据文件也可以写在控制文件中
TBL_VERSION.ctl
load
data
infile "/home/oracle/TBL_VERSION.data"
append into table CARDV2.TBL_VERSION
fields terminated by ","
trailing nullcols
(
ID "cardv2.SEQ_VERSION.nextval",
VERSION
char(500)
,
CREATEDATE "sysdate",
NUM,
CITY,
DES
)
sqlldr cardv2/misspell@oracle control=./TBL_VERSION.ctl log=./TBL_VERSION.log bad=./TBL_VERSION.bad errors=1000