CSV: Comma-Separated Values(逗号分隔值)的缩写,是以逗号分隔字段的多行文本文件
sqlldr 是sql*loader的缩写,此工具在安装完整版的Oracle客户端后就有
使用sqllldr可以将有规律的文本数据(如csv)导入数据表
导入示例:将csv文本文件andon.txt导入到manpowertest中的testandon表中
testandon表结构
create table TESTANDON
(
build_no VARCHAR2(5),
device_no VARCHAR2(5),
btn_no
VARCHAR2(5),
flag VARCHAR2(1),
data_time DATE
--此为时间格式,导入时要作特殊处理
)
(
build_no VARCHAR2(5),
device_no VARCHAR2(5),
btn_no
VARCHAR2(5),
flag VARCHAR2(1),
data_time DATE
--此为时间格式,导入时要作特殊处理
)
1、用记事本或其它文本软件创建一个.ctl导入控件文件,此处以C:\andon.ctl为例,内容为
OPTIONS(SKIP=1)
--跳过1行,即跳过csv文件的第一行表头不导入
load data
infile 'C:\andon.txt'
--要导入的csv文本的路径
append into table manpowertest.testandon
--要导入到数据库中哪个表
fields terminated by ","
--要导入的文本是以什么符号分隔字段的,这里是逗号
(
--跳过1行,即跳过csv文件的第一行表头不导入
load data
infile 'C:\andon.txt'
--要导入的csv文本的路径
append into table manpowertest.testandon
--要导入到数据库中哪个表
fields terminated by ","
--要导入的文本是以什么符号分隔字段的,这里是逗号
(
build_no, --要导入到表中的哪些字段
device_no,
btn_no,
flag,
data_time timestamp "yyyy-mm-dd hh24:mi:ss"
--由于数据表中此字段类型为date类型,并非文字类型,使用timestamp
"yyyy-mm-dd hh24:mi:ss"进行格式转换
device_no,
btn_no,
flag,
data_time timestamp "yyyy-mm-dd hh24:mi:ss"
--由于数据表中此字段类型为date类型,并非文字类型,使用timestamp
"yyyy-mm-dd hh24:mi:ss"进行格式转换
)
2、在cmd中执行sqlldr命令如下
sqlldr userid=manpowertest/manpowertest@ora32 control=c:\andon.ctl
log=c:\andon.log
log=c:\andon.log
附檔1:andon.txt
栋号,设备号,按钮代码,开关状态,触发时间
A2-1,4,2,1,2014-10-29 15:14:13
A2-1,30,2,0,2014-10-29 14:51:36
A2-2,10,2,0,2014-10-29 14:18:53
A2-2,11,2,0,2014-10-29 15:11:07
A2-2,12,2,0,2014-10-29 14:40:13
附檔2:andon.ctL
OPTIONS(SKIP=1)
load data
infile 'C:\andon.txt'
append into table manpowertest.testandon
fields terminated by ","
(build_no,
device_no,
btn_no,
flag,
data_time timestamp "yyyy-mm-dd hh24:mi:ss")