将CSV、EXCEL、TXT等文件导入到oracle中的具体做法.doc
文本预览下载声明
将CSV、EXCEL、TXT等文件导入到oracle中的具体做法:
本人所作的项目使用Oracle数据库,决定使用Oracle提供的功能直接导入到Oracle库表中。*.csv文件中存放的是数据表.每行代表数据库表格的一行每行中,每两个数据中间由逗号,分割*.csv可以通过将excel文件另存为*.csv得到*.csv文件可以由数据库中的表格直接导出成*.csv得到。
现本人有csv格式文件dnldrgx.csv或Excel格式文件dnldrgx.xls。想将其导入到线损数据库Andy中的lams用户下(假设口令也是lams)。(账号/口令@数据库:lams/lams@Andy)。下面具体说明操作过程。
2、csv文件或excel文件另存为文本文档(制表符分隔)
dnldrgx.csv 另存为 dnldrgx.txt,存放路径在d:/dnldrgx.txt
dnldrgx.txt文件中存放以下数据.IO_ID MP_ID LINE_NAME STATION_NAME IO_VOTAGE IO_SORT20004489 港牵一线 港湾站 220kV 120004489 港牵一线 港湾站 220kV 220004489 港牵一线 港湾站 220kV 320004489 港牵一线 港湾站 220kV 4
。。。。。。
(注:实际上,这里不应该有第一行
IO_ID MP_ID LINE_NAME STATION_NAME IO_VOTAGE IO_SORT
因为这一行会在导入操作完成后也导入到系统中
)
2、创建表目标表
本人的目标表为et_rpt_dnlzdsjdrb,在oracle中使用create命令创建好目标表,字段要和csv文件中数据对应的字段相同。
IO_ID MP_ID LINE_NAME STATION_NAME IO_VOTAGE IO_SORT 采集器编码 线路编码 线路名称 厂站名称 线路电压等级 采集器类别
3、创建.ctl文件load data
infile d:/dnldrgx.txt
insert into table et_rpt_dnlzdsjdrb
fields terminated by X09
(IO_ID,MP_ID,LINE_NAME,STATION_NAME,IO_VOTAGE,IO_SORT)
注:这里,X09代表制表符。同时et_rpt_dnlzdsjdrb不要加引号,最开始因为加了引号之后的操作会出现问题,不加引号后正确。
此外,注意(IO_ID,MP_ID,LINE_NAME,STATION_NAME,IO_VOTAGE,IO_SORT)这一行字段顺序要和带制表符的TXT文档中的数据的顺序一一对应。
infile d:/dnldrgx.txt,这里是指明源数据文件的位置,使用绝对路径。
Insert表示将源TXT中的数据插入到新的表中。(这里也可以设置成append等,对应的操作不同,可以查看相应的资料进行了解)
将test.ctl文件放在D盘根目录。
4、打开cmd命令行
运行——cmd回车——输入sqlldr lams/lams@Andy control=d:/test.ctl log=d:/test.log 回车
这里是调用oracle自带的功能 sql loader 功能,其格式如上,具体解释为
sqlldr 用户名/口令@数据库名 control=ctl文件的绝对路径 log=log文件的绝对未知(这个一般默认为log=d:/test.log)。
运行后系统提示:
Test.log 中的内容
SQL*Loader: Release .0 - Production on 星期四 11月 24 15:11:43 2011
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
控制文件: d:/test.ctl
数据文件: d:/dnldrgx.txt
错误文件: d:/dnldrgx.bad
废弃文件: 未作指定
:
(可废弃所有记录)
加载数: ALL
跳过数: 0
允许的错误: 50
绑定数组: 64 行,最大 256000 字节
继续: 未作指定
所用路径: 常规
表ET_RPT_DNLZDSJDRB
已加载从每个逻辑记录
插入选项对此表INSERT生效
列名 位置 长度 中止 包装数据类型
------------------------------ ---------- ----- ---- ----
显示全部