各位大侠,小弟有一张表,共15个字段,现在有100000个用户号码需要插入到表中,但是这一万个号码在一个txt文件里面,txt文件只有一列 号码,没有其它的字段,这张表有10个必填字段,现在需要把这1万个号码入库,表有5个字段可以为空,剩下的10个字段,除了用户号码。其它的9个字段我可以填固定的值,但是号码一定要是文件里面的号码(号码无重复的),我可以把这些号码导入到一张临时表里面,要求不能通过写程序去插入,只能通过sql脚本或着其它的工具,小弟对oracle数据库不是很熟,希望各位高手给点建议,多谢!

解决方案 »

  1.   

    楼主用oracle sql loader
    搜索下使用方法
      

  2.   

    oracle sql loader 会用一点,但是文件里面只有一列数据啊,我需要在表里面插入的是一条记录,有10个字段啊,文件里面只有1列,谢谢你!
      

  3.   

    楼主可以用 sql loader 试试..先建表,只建一个列,用sql loader把数据从txt导入后,在用sql添加并修改其他的列附实例:
    创建表: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
      

  4.   

    先用toad,
    select id,'固定值1','固定值2'... from temptable;
    结果导出保存成txt文件。
    然后sqlloader导入最直接的方法是
    insert into table select select id,'固定值1','固定值2'... from temptable;
      

  5.   

    用外部表关联上txt文件
    然后,直接操作就行了
      

  6.   

    要不你用pl/sql 里textImporter  在 tools里不过不是很快,我一次导入2千条都慢
    你可以另存为csv文件,用exel加上一列数据 应该很快然后分批导入
      

  7.   

    用PLSQLDeveloper把数据导入到临时表
    剩下的就是写SQL的问题了
      

  8.   

    一个简单的方法,给9个必要字段设定默认值,
    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);