sql*loader不能从数据库导出数据, 虽然可以通过外部表的oracle_datapump方式可以导出数据,但是是二进制格式。 所以,要将数据生成CSV,可以 1、使用pl/sql developer,查询出结果,在结果表格上单击右键,然后Export Results -> csv(Toad也可以) 2、使用sqlplus执行脚本,例如,一个脚本样例,expcsv.sqlset heading off set termout off set feedback off set pagesize 0 set trimsout on set trimspool on spool table1.csv select col1||','||col2||','||col3 from table1; spool off
谢谢两位的回答,我现在用sqlplus执行SQL脚本,可以导出CSV文件,只是导出的内容排版很乱, select col1||','||col2||','||col3 from table1;我也是这么拼的,显示的数据不好看哦
再弱弱的问下 select inv_no||','||term_id||','||barcode||','||stock||','||shelf||','||taken_by||',''''||date||'''','||time||','||stk||','||dtype from chkdisp_csv; 这里的date是关键字,应该怎么处理哦
晕,那就是加双引号了" select inv_no||','||term_id||','||barcode||','||stock||','||shelf||','||taken_by||',"'||date||'",'||time||','||stk||','||dtype from chkdisp_csv;
双引号位置错了,这样 select inv_no||','||term_id||','||barcode||','||stock||','||shelf||','||taken_by||','||"date"||','||time||','||stk||','||dtype from chkdisp_csv;
虽然可以通过外部表的oracle_datapump方式可以导出数据,但是是二进制格式。
所以,要将数据生成CSV,可以
1、使用pl/sql developer,查询出结果,在结果表格上单击右键,然后Export Results -> csv(Toad也可以)
2、使用sqlplus执行脚本,例如,一个脚本样例,expcsv.sqlset heading off
set termout off
set feedback off
set pagesize 0
set trimsout on
set trimspool on
spool table1.csv
select col1||','||col2||','||col3 from table1;
spool off
select col1||','||col2||','||col3 from table1;我也是这么拼的,显示的数据不好看哦
select inv_no||','||term_id||','||barcode||','||stock||','||shelf||','||taken_by||',''''||date||'''','||time||','||stk||','||dtype from chkdisp_csv; 这里的date是关键字,应该怎么处理哦
难道你的表中有名为date的列?
select inv_no||','||term_id||','||barcode||','||stock||','||shelf||','||taken_by||',"'||date||'",'||time||','||stk||','||dtype from chkdisp_csv;
select inv_no||','||term_id||','||barcode||','||stock||','||shelf||','||taken_by||','||"date"||','||time||','||stk||','||dtype from chkdisp_csv;
shelf || ',' || taken_by || ',' || "DATE" ||
',' || time || ',' || stk || ',' || dtype
from chkdisp_csv ; 谢谢楼下指教。。这个问题OK
spool e:\upload_file.csv;
set echo off;
set feedback off;
set heading off;
set pagesize 0;
set pages 500;
set linesize 85;
set trimout off;
set trimspool on;
set termout off;
set trims on
select inv_no || ',' || term_id || ',' || barcode || ',' || stock || ',' ||
shelf || ',' || taken_by || ',' || "DATE" ||
',' || time || ',' || stk || ',' || dtype
from chkdisp_csv ;
spool off;
exit;
union all
select inv_no || ',' || term_id || ',' || barcode || ',' || stock || ',' ||
shelf || ',' || taken_by || ',' || "DATE" ||
',' || time || ',' || stk || ',' || dtype
from chkdisp_csv ;
union all
select inv_no || ',' || term_id || ',' || barcode || ',' || stock || ',' ||
shelf || ',' || taken_by || ',' || "DATE" ||
',' || time || ',' || stk || ',' || dtype
from chkdisp_csv ;
这样写吗?报表说ORA-01789: 查询块具有不正确的结果列数
而你的第一个sql却有好几列,怎么union?
楼主还是要多思考啊
select 'inv_no' || ',' || 'term_id' || ',' || 'barcode' || ',' || 'stock' || ',' ||
'shelf' || ',' || 'taken_by ' || ',' || 'DATE' || ',' || 'time' || ',' ||
'stk' || ',' || 'dtype'
from dual
union all
select inv_no || ',' || term_id || ',' || barcode || ',' || stock || ',' ||
shelf || ',' || taken_by || ',' || "DATE" || ',' || time || ',' || stk || ',' ||
dtype
from chkdisp_csv; 只是奇怪,怎么CSV文件一直都空了第一行呢?是设置了什么吗??
spool d:/table1.csv
select 'inv_no' || ',' || 'term_id' || ',' || 'barcode' || ',' || 'stock' || ',' ||
'shelf' || ',' || 'taken_by ' || ',' || 'DATE' || ',' || 'time' || ',' ||
'stk' || ',' || 'dtype'
from dual
union
select g.stuname || ',' || g.subject || ',' || g.grade
from mw_app.mwt_gradeinfo g;
spool off
csv中的内容:
inv_no term_id barcode stock shelf taken_by DATE time stk dtype
李光明 高代 80
宋光辉 大学物理 80
没有空行啊
估计是设置问题
spool D:\修改chkdisp_v10.2(++新CSV)\chkdisp_v10.2\chkdisp_v10.2\chkdisp\src\upload_file.csv;
set echo off;
set feedback off;
set newp none ;
set heading off;
set pagesize 0;
set pages 500;
set linesize 85;
set trimout off;
set trimspool on;
set termout off;
set trims on
select 'inv_no' || ',' || 'term_id' || ',' || 'barcode' || ',' || 'stock' || ',' ||
'shelf' || ',' || 'taken_by ' || ',' || 'DATE' || ',' || 'time' || ',' ||
'stk' || ',' || 'dtype'
from dual
union all
select inv_no || ',' || term_id || ',' || barcode || ',' || stock || ',' ||
shelf || ',' || taken_by || ',' || "DATE" || ',' || time || ',' || stk || ',' ||
dtype
from chkdisp_csv;
spool off;
exit;
加了一个set newp none ;已经没有空格。也希望这些问题能够帮助更多的朋友。