A. oracle将表A里的数据导出为txt文件,用存储过程怎么写
分几个步骤
1,创建输出路径,比如你要在c盘test目录下输出,你就先要建立好这个test路径
2,sqlplus下以sysdba登录,执行以下语句
3,create or replace directory TMP as 'c: est';
4,grant read,write on directory TMP to 你要生成文件的用户;
5,alter system set utl_file_dir='c: est' scope=spfile;
以上步骤执行完,需要重启数据库
6,最重要的一步开始了,创建存储过程
createorreplacePROCEDURESP_OUTPUT
is
file_handleutl_file.file_type;
Write_contentVARCHAR2(1024);
Write_file_nameVARCHAR2(50);
v_idint;
v_formvarchar2(10);
cursorcur_sp_out
is
selectid,formfroma;
begin
opencur_sp_out;
loop
fetchcur_sp_outintov_id,v_form;
exitwhencur_sp_out%notfound;
write_file_name:=to_char(SYSDATE,'YYYYMMDD')||'.txt';
file_handle:=utl_file.fopen('TMP',write_file_name,'a');
write_content:=v_id||''||v_form;
--writefile
IFutl_file.is_open(file_handle)THEN
utl_file.put_line(file_handle,write_content);
ENDIF;
--closefile
utl_file.fclose(file_handle);
endloop;
closecur_sp_out;
end;
我建立了一个跟你一样的测试表,数据如下
createtablea(idint,
formvarchar2(10));
insertintoavalues(1,'你好');
insertintoavalues(2,'你很好');
然后执行存储过程
begin
SP_OUTPUT;
end;
执行完毕后,你在c盘test路径下会发现已经有新文件生成
存储过程的话,如果表名和字段名跟你一致的话,你无须修改
B. 千万级数据量的txt 是用什么方法导入到oracle数据库中比较快
使用sqlload 很快。一般要达到5000行/秒。在比较苛刻的要求下,要达到8000条/秒。
换算成你的1千万行的数据量,大概要半个多小时。
——注: 上面是在硬件配置比较好的情况下。
C. 求一个oracle读取txt文件的存储过程
只用一次可以用PL/SQL导入,
多次使用,存储过程读取文件好像不行,还是写一段java代码来解决吧
D. 如何将oracle中的数据导出成txt,现在要求导出所有表成txt,spool很难实现了,如何脚本实现
其实很简单,使用pl/sql developer 进入oracle,导出查询结果为cvs 文件,然后用记事本打开,然后另存为TXT文件就行了
E. 怎么将txt的数据导入oracle数据库
将文本文件导入Oracle中需要用sqlloader的方式。
1、在数据库中创建相应的表。
如,文本文件内容为:
1
2
3
4
create table test
(id int,
name varchar2(10),
sex varchar2(10));
2、在电脑中某路径下编写ctrl文件,以c盘data目录为例,添加如下文本。如,被导入的文件名为load.txt
1
2
3
4
5
6
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、输入以下语句,并执行。
1
sqlldr userid=用户名/密码@数据库实例名 control=load.ctl log=load.log
5、导入后,test表中数据如下: