我收到了生成包含应用程序数据库中用户信息的固定长度Feed文件的要求 并与另一个系统共享该文件。
在固定长度中,已经告知每列的x字符长度后跟下一列 比如y字符长度等等,直到最后一列被提取。总行长度必须为2900.
我设法起草了一个类似于以下代码片段的SQL文件:
SET HEADING OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET LINESIZE 2900
SET PAGESIZE 0
SPOOL user_feed.txt
SELECT extract_date
|| user_name
|| user_email
|| user_sys
|| user_grpname "USER_ROW"
FROM
(SELECT RPAD(DECODE(extract_date,'',' ',trim(extract_date)),26) user_name,
RPAD(DECODE(name,'',' ',trim(name)),50) user_name,
RPAD(DECODE(email,'',' ',trim(email)),75) user_email,
RPAD(DECODE(sys_name,'',' ',trim(sys_name)),10) user_sys,
RPAD(DECODE(group_name,'',' ',trim(group_name)),26) user_grpname
--....so on (picking all columns from below query)
FROM
(SELECT CAST(sysdate AS TIMESTAMP) extract_date,
u.name,
u.email,
g.sys_name,
g.group_name --(....so on)
FROM user_tab u,
user_grp g
WHERE u.userid = g.userid
)
);
SPOOL OFF;
当我调整少量数据时会产生固定长度的文件,但是当源表包含大量行时,假脱机文件不会保留格式,数据会混合。
感谢。