各位大侠,小弟有一张表,共15个字段,现在有100000个用户号码需要插入到表中,但是这一万个号码在一个txt文件里面,txt文件只有一列 号码,没有其它的字段,这张表有10个必填字段,现在需要把这1万个号码入库,表有5个字段可以为空,剩下的10个字段,除了用户号码。其它的9个字段我可以填固定的值,但是号码一定要是文件里面的号码(号码无重复的),我可以把这些号码导入到一张临时表里面,要求不能通过写程序去插入,只能通过sql脚本或着其它的工具,小弟对oracle数据库不是很熟,希望各位高手给点建议,多谢!
搜索下使用方法
创建表:test_load,
sql>create table test_load(id number(10),uname varchar2(20), phone varchar2(20));
控制文件:d:\loader.ctl
load data
infile 'd:\datafile.txt'
append into table test_load
fields terminated by "," optionally enclosed by '"'
( id, uname, phone ) 数据文件:D:\datafile.txt
001,"david",0551-1234567
002,"dave",0551-7654311
sqlloader命令:
SQL>sqlldr 'sys/admin AS SYSDBA' control=D:\loader.ctl log=d:\a.log
SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 7月 2 09:40:42 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
达到提交点 - 逻辑记录计数 1
达到提交点 - 逻辑记录计数 2
SQL> select * from test2;
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
10002 Frank 500 20
10001 Scott 1000 40 Oracle SQL Loader 工具介绍
http://user.qzone.qq.com/251097186/blog/1246500706
select id,'固定值1','固定值2'... from temptable;
结果导出保存成txt文件。
然后sqlloader导入最直接的方法是
insert into table select select id,'固定值1','固定值2'... from temptable;
然后,直接操作就行了
你可以另存为csv文件,用exel加上一列数据 应该很快然后分批导入
剩下的就是写SQL的问题了
alter table mytable modify (col1 default '1');
alter table mytable modify (col2 default '2');
...
alter table mytable modify (col9 default '9');然后用sql-loader直接导入一万条记录,只需要一列数据,3楼给的示例很好。完成后去掉默认值,
alter table mytable modify (col1 default null);
alter table mytable modify (col2 default null);
...
alter table mytable modify (col9 default null);