我有一表,创建如下:
create table tmp (name varchar2(10),n char(10));
然后插入一条数据
insert into tmp values('dd ','kk ');
我想用spool将其导出成TXT文件,我做了多种set的尝试,但是导出的文件要不就是结尾很多空格,
要不就是结尾没空格; 而我想要的结果是结尾正好8个空格,因为n char(10)应该共10的长度,去掉kk正好8个空格才对...我的代码如下:SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET PAGESIZE 0;
SET LINESIZE 1000;
SET TRIMSPOOL ON;
SET TRIMOUT ON;
SET TERMOUT OFF;
SET VERIFY OFF;SPOOL D:\EXT_CONTRAT1.TXT;SELECT name||'|'||n
FROM tmp;SPOOL OFF;
create table tmp (name varchar2(10),n char(10));
然后插入一条数据
insert into tmp values('dd ','kk ');
我想用spool将其导出成TXT文件,我做了多种set的尝试,但是导出的文件要不就是结尾很多空格,
要不就是结尾没空格; 而我想要的结果是结尾正好8个空格,因为n char(10)应该共10的长度,去掉kk正好8个空格才对...我的代码如下:SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET PAGESIZE 0;
SET LINESIZE 1000;
SET TRIMSPOOL ON;
SET TRIMOUT ON;
SET TERMOUT OFF;
SET VERIFY OFF;SPOOL D:\EXT_CONTRAT1.TXT;SELECT name||'|'||n
FROM tmp;SPOOL OFF;
col a for a10
但是每行的长度并不确定,我希望输出的是真实的长度,在当前的例子应该是dd |kk ,也就是
正好14个字符,kk后面应该是8个空格才对
难道用SPOOL实现不了
我只是写了个小的例子说明问题
恩那如果字段n的类型是varchar2(10),我希望导出时保留空格,使得之后的导入能保留原来的空格能做到么?
set linesize 600 假设总长度为600,其中内容长度为592个,结尾空格为8个
set trimspool on 此参数为不截取结尾空格,这样一行长度就是600个另外空格可以使用如下函数生成
LPAD(NVL(NULL,' '),8,' ')