如何将文本文件导入到Oracle数据库中 ?

比如,我有个 test.txt 文件,现在我想把里面的数据导入到Oracle数据库中的一张表 table1 中, 具体怎么实现 ? 网上查了一下, 都说可以用sqllbr可以实现,但具体怎么要怎么做
我自己再c盘下写了两个文件,一个是test.ctl ,其内容如下:
Load data
Infile 'c:\事件表.txt'
append into table ccc.事件表 Fields terminated by ' '(log_date,log_time,log_event,log_ms)
log_date,log_time,log_event,log_ms 分别为四个字段
现在可以导入了, 不过又有新问题了,如果一条记录中有字段为空值就导入不了,怎么解决,含有空值的记录也要插入到数据库

将文本文件导入Oracle中需要用sqlloader的方式。

1、在数据库中创建相应的表。

如,文本文件内容为:

create table test
(id int,
name varchar2(10),
sex varchar2(10));

2、在电脑中某路径下编写ctrl文件,以c盘data目录为例,添加如下文本。如,被导入的文件名为load.txt

  load   data   
  infile   'load.txt'  --被导入文件名
  replace into   table   test     
  (id   char   terminated   by   ',',   
  name   char   terminated   by   ',',   
  sex   char   terminated   by   whitespace)

编写后,将文件保存成load.ctrl

3、然后打开命令提示符,并进入到文本文件和ctrl文件所在目录。

4、输入以下语句,并执行。

sqlldr userid=用户名/密码@数据库实例名   control=load.ctl   log=load.log

5、导入后,test表中数据如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-17
根据报错信息“ORA-12514:TNS: 监听程序当前无法识别连接描述符中请求的服务”,很明显是@10.20.30.42指定远程服务器出错了,@后面应该是连接远程服务器的Net服务名,而不是IP地址本回答被提问者采纳
第2个回答  2010-03-17
写编写一个ctl文件 保存在如C:/insert.ctl
内容为:
load data infile '你的test.txt的路径'
append into table 表名 --(要事先建好)
fields terminated by ',' --用逗号分隔为例
(field1,
.
.
fieldn) --与列名对应

在cmd中
sqlldr 用户名/密码 control=C:/insert.ctl

上面汉字为提示或需要修改成你具体的情况。

没有远程试过;本地是OK的。
相似回答