解决方案 »
- Oracle中关于求索引表中数据最大值的问题~~~
- 移植问题,Oracle的MAX,MIN函数(从DB2到Oracle)
- oracle外部表问题
- 不完全恢复,为什么要做reset online redo log?
- 急求答案.高分
- windows2003server+oracle10g用http://server:5500/em进入后进行备份时,出现主机身份证明问题.
- oracle10G 动态创建表
- SQL2000转移到ORACLE的问题?
- 如何查找一个表中的某一字段完全包括了另一个表中的对应字段的记录?
- 请大家帮我看看这个触发器那里有错误
- 数据库有没有一个自增函数?
- ORA-01861 literal does not match format string 急!!
infile 'd:\test.csv'
append into table table_name
fields terminated by ','
(field_name1,field_name2)2. 在DOS提示符运行以下导入语句: d:\sqlldr userid=test/pwd@server control=d:\test.ctl
例如取出的字符串如下
ab<TAB>c<TAB>123<TAB>nnn<TAB>lzf
取第一个为
substr(field,1,instr(field,'TAB',1,1)-1)
取第二个到N个
substr(field,instr(field,'TAB',1,n-1)+1,instr(field,'TAB',1,n)-instr(field,'TAB',n-1))
最后一个为n
substr(field,instr(field,'TAB',1,n-1)+1)我的方法有点繁,我觉得通过utl_file无法解决,不知大家有没有别的好的方法
1. 生成一个如下的CONTROL文件,test.ctl: load data
infile 'd:\test.csv'
append into table table_name
fields terminated by x'09'
(field_name1,field_name2)2. 在DOS提示符运行以下导入语句: d:\sqlldr userid=test/pwd@server control=d:\test.ctl
存储过程的话,我这有个例子,发给你看看。create or replace procedure imp is
i number(3);
j number(3); id varchar2(10);
zh varchar2(10);
ph varchar2(10);
flag varchar2(10);
temp varchar2(300); handle utl_file.file_type;
begin
handle:=utl_file.fopen('e:\','ticket.txt','r'); loop
begin
utl_file.get_line(handle,temp);
exception
when no_data_found then exit;
end;
select replace(temp,'"') into temp from dual; i:=instr(temp,',',1,1);
id:=trim(substr(temp,1,i-1)); j:=instr(temp,',',1,2);
zh:=trim(substr(temp,i+1,j-i-1)); i:=j;
j:=instr(temp,',',1,3);
ph:=trim(substr(temp,i+1,j-i-1)); flag:=trim(substr(temp,j+1)); insert into subwaydata(id,zh,ph,flag)values(id,zh,ph,flag);
commit;
end loop; utl_file.fclose(handle);
end;