A. 教你如何把Oracle表中的数据导出成Txt格式
上周做系统演示时需要手工制造一些文本数据充当数据源,想偷偷懒就用了Toad工具直接查询后导出成csv格式。今天正好有点时间,整理了一下思路,用sql去实现文本数据的生成。写了大致框架,有空时再来完善吧。 步骤如下: 新建一个sql脚本 d:\czrk.sql,代码如下: SET echo off SET feedback off SET newpage none SET pagesize 50000 SET linesize 20000 SET verify off SET pagesize 0 SET term off SET trims ON SET heading off SET trimspool ON SET trimout ON SET timing off SET verify off SET colsep | spool d:\czrk.txt SELECT sfzh || ',' || xm || ',' || xb || ',' || csrq || ',' || mz|| ',' || xzqh|| ',' || jzdz FROM m_czrk WHERE rownum<=10000; spool off sqlplus连接上数据库,执行脚本 sqlplus dc/dc@mydb; 这样就在d盘下生成了一万条数据了。
B. oracle怎么把表导出为txt文件
1.plsqldev 里面有一个选项可以把表以excel格式到时
2.使用spool
[sql] view plain
sqlplus / as sysdba
set linesize 1000
set pagesize 0
set echo off
set termout off
set heading off
set feedback off
SET trims ON
set term off
SET trimspool ON
SET trimout ON
spool '/archlog/exp/test.txt';
select OWNER||' , '||SEGMENT_NAME||' , '||PARTITION_NAME||' , ' from dba_segments where rownum<100;
spool off;
#输出的test.txt文件头尾要编辑下
#set term off 只有在使用.sql脚本文件时才起作用,如上虽然指定了 set term off但是还是会把结果输出,也就是说set term off设置只对sql脚本有用
3.使用UTL_FILE程序包
##UTL_FILE.FOPEN第一个参数为文件路径,不能直接指定绝对路径,需要建立directory,然后指定我们建立的directory
sqlplus / as sysdba
create directory MY_DIR as '/home/oracle/';
grant read,write on directory dir_mp to HR;##也可以直接建立一个public directory
[sql] view plain
CREATE OR REPLACE PROCEDURE test
IS
testjiao_handle UTL_FILE.file_type;
BEGIN
test_handle := UTL_FILE.FOPEN('MY_DIR','test.txt','w');
FOR x IN (SELECT * FROM TESTJIAO) LOOP
UTL_FILE.PUT_LINE(test_handle,x.ID || ',' || x.RQ ||',');
END LOOP;
UTL_FILE.FCLOSE(test_handle);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));
END;
/
C. 如何把oracle一个表的数据导出为一个txt文件
如果数据量比较大的话,还是用d.c.b.a的ociuldr吧,也省得sqlplus spool还要麻烦地格式化输出
D. 如何正确把Oracle数据导出成Txt 的格式
简单的就下载个PL/SQL,连接ORACLE后用其自带的导出导入功能就可以了,很方便。复杂点的
就用sqlldr spool(oracl自带的),网上有很多例子
sqlldr导出txt
利用spool 导出txt
1.写output.sql
sqlplus system/psw@db as sysdba --连接oracle
CHARACTERSET
al32UTF8 --设置编码集
set trimspool
on --打开池
spool
c:\output\output.txt --池输出路径
set pagesize
0 --页设置
set heading
off --关闭表头
set linesize
32767 --最大行显
select
'#'||col1||'#,#'||col2||'#,#'||col3||'#‘ --设置需要的列格式。此例,列间以以逗号分隔,列内容用#引起。
from test_data;
exit;
--退出sqlplus
spool off
--关闭池
pause
E. 如果从oracle数据库中的某张表a1导出某种条件的数据到.txt文件
一般不直接输成.txt文件的,一般利用spool存为.sql的
脚本文件
,你用记事本就可以直接打开和修改的,双击它就会在sql
server里面打开,其实是符合你的要求的
如你想保存
select
*
from
table_test;语句的结果,可以在
sql*plus
里面这样:
SPOOL
c:\resultfortest.sql
//这个是文件的位置
select
*
from
table_test;
SPOOL
OFF
完成输出
F. 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路径下会发现已经有新文件生成
存储过程的话,如果表名和字段名跟你一致的话,你无须修改
G. 如何使用SQL语句将Oracle数据库表导出为TXT文件
可用spool的方式将oracle的数据导出成文本。
1、登录sqlplus到指定数据库。
2、在某一路径,如c盘data目录下,创建脚本,文件名为:导出脚本.sql 内容如下:
set colsep '|' --设置|为列分隔符
settrimspoolon
setlinesize120
setpagesize2000
setnewpage1
setheadingoff
settermoff
setnum18
setfeedbackoff
spoolc:data导出.txt
select*fromemp;
spooloff
3、执行命令:
@C:data导出脚本.sql
4、执行结束后,c盘data目录下会生成导出.txt的文件,里边内容就是导出表中的内容。