问题描述
嗨,汤姆,
我正在尝试对表中的列进行假脱机处理(有200多列) ,但我无法导出所有列,因为从sqlplus返回的列数量有限。共享脚本中的代码片段:
设置COLSEP ','线尺寸32767数字宽频18长2000回波关闭
将修剪设置为阵列大小5000自动提交关闭关闭在修剪关闭时清除标题
设置暂停关闭服务器输出(在检查关闭时)
设置下划线关闭页面大小0转义标题关闭反馈关闭自动换行
SPOOL&s池驱动器.&s池驱动器.&s池驱动器. TABLE_XYZ.csv
选择/*csv*/
'正在从表TABLE_XYZ中提取数据', SYSTAMP从双通道读取数据;
选择/*csv*/
xmlagg ( xml元素(e ,列名||',') .extext('//text()')按列ID排序)
来自于用户_TAB_COLS WHERE TABLE_NAME='TABLE_XYZ';
选择/*csv*/
*来自TABLE_XYZ ,其中项目ID = &p_id ;
阀芯关闭;
有什么我错过了吗?或者是否有任何方法可以打印所有列,无论它超过行缓冲区大小?
我正在尝试对表中的列进行假脱机处理(有200多列) ,但我无法导出所有列,因为从sqlplus返回的列数量有限。共享脚本中的代码片段:
设置COLSEP ','线尺寸32767数字宽频18长2000回波关闭
将修剪设置为阵列大小5000自动提交关闭关闭在修剪关闭时清除标题
设置暂停关闭服务器输出(在检查关闭时)
设置下划线关闭页面大小0转义标题关闭反馈关闭自动换行
SPOOL&s池驱动器.&s池驱动器.&s池驱动器. TABLE_XYZ.csv
选择/*csv*/
'正在从表TABLE_XYZ中提取数据', SYSTAMP从双通道读取数据;
选择/*csv*/
xmlagg ( xml元素(e ,列名||',') .extext('//text()')按列ID排序)
来自于用户_TAB_COLS WHERE TABLE_NAME='TABLE_XYZ';
选择/*csv*/
*来自TABLE_XYZ ,其中项目ID = &p_id ;
阀芯关闭;
有什么我错过了吗?或者是否有任何方法可以打印所有列,无论它超过行缓冲区大小?
专家解答
如果输出大于32767 ,则sqlplus不会显示它,除非您打开换行(然后行将换行)。
SQL> create table TABLE_XYZ ( col1 char(200) );
Table created.
SQL>
SQL> declare
2 ins_sql varchar2(32000) := q'{insert into TABLE_XYZ values ('x'}';
3 begin
4 for i in 2 .. 200 loop
5 execute immediate 'alter table TABLE_XYZ add col'||i||' char(200)';
6 ins_sql := ins_sql || ',''x''';
7 end loop;
8 execute immediate ins_sql||')';
9 end;
10 /
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL> SET COLSEP ',' LINESIZE 32767 NUMWIDTH 18 LONG 2000 ECHO OFF
SQL> SET TRIMOUT ON ARRAYSIZE 5000 AUTOCOMMIT OFF FLUSH OFF HEADING ON TERMOUT OFF
SQL> SET PAUSE OFF SERVEROUTPUT ON TRIMSPOOL ON VERIFY OFF
SQL> SET UNDERLINE OFF PAGESIZE 0 ESCAPE OFF HEADING OFF FEEDBACK OFF WRAP OFF
SQL>
SQL> SELECT * from TABLE_XYZ;
rows will be truncated
rows will be truncated
rows will be truncated
...
...
SQL> set wrap on
SQL> SELECT * from TABLE_XYZ;
x ,x ,x
,x ,x ,x
,x ,x
,x ,x ,x
,x ,x
,x ,x ,x
,x ,x ,x
,x ,x
,x ,x ...
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




