【问题标题】:SQLPlus Spool CSV adding new line in columnsSQLPlus Spool CSV 在列中添加新行
【发布时间】:2021-01-14 10:52:39
【问题描述】:

我需要您的帮助来将 SQL 输出假脱机到格式化的 CSV 下面是产生结果的查询 -

set linesize 800
set pagesize 0 embedded ON
set underline off
col USERNAME format A12
COL USER_ID HEADING 'ID'
col USER_ID format 999
COL PASSWORD HEADING 'PWD'
col PASSWORD format a03
col ACCOUNT_STATUS format a18
col DEFAULT_TABLESPACE format a9
col DEFAULT_TABLESPACE heading 'DEF_TBS'
col TEMPORARY_TABLESPACE format a7
col TEMPORARY_TABLESPACE heading 'TMP_TBS'
col profile format a8
col INITIAL_RSRC_CONSUMER_GROUP format a22
col INITIAL_RSRC_CONSUMER_GROUP heading 'INIT_RSRC_CONSUMER_GRP'
col EXTERNAL_NAME heading 'EXT_NAME'
col EXTERNAL_NAME format a2
col EXPIRY_DATE heading 'EXP_DATE'
col PASSWORD_VERSIONS heading 'PWD_VERS'

set flush off
set echo off
set term off
set colsep ';'
set trimspool on

SELECT
  u.username, u.user_id, u.account_status, u.created, u.lock_date, u.profile,
  MAX(DECODE (up.resource_name, 'FAILED_LOGIN_ATTEMPTS', up.limit, '')) FAILED_LOGIN_ATTEMPTS,
  MAX(DECODE (up.resource_name, 'PASSWORD_REUSE_TIME', up.limit, '')) PASSWORD_REUSE_TIME,
  MAX(DECODE (up.resource_name, 'PASSWORD_VERIFY_FUNCTION', up.limit, '')) PASSWORD_VERIFY_FUNCTION,
  MAX(DECODE (up.resource_name, 'PASSWORD_LOCK_TIME', up.limit, '')) PASSWORD_LOCK_TIME,
  MAX(DECODE (up.resource_name, 'PASSWORD_REUSE_MAX', up.limit, '')) PASSWORD_REUSE_MAX,
  MAX(DECODE (up.resource_name, 'PASSWORD_GRACE_TIME', up.limit, '')) PASSWORD_GRACE_TIME,
  MAX(DECODE (up.resource_name, 'PASSWORD_LIFE_TIME', up.limit, '')) PASSWORD_LIFE_TIME
FROM dba_users u
INNER JOIN (SELECT p.profile, p.resource_name, DECODE(p.limit, 'DEFAULT', pd.limit, p.limit) limit
            FROM dba_profiles p
            LEFT JOIN dba_profiles pd ON p.resource_name = pd.resource_name AND p.resource_type = pd.resource_type AND pd.profile = 'DEFAULT'
            WHERE p.resource_type = 'PASSWORD') up ON u.profile = up.profile
GROUP BY u.username, u.user_id, u.account_status, u.created, u.lock_date, u.profile;

上面的代码在 csv - 下面产生,这里的列是换行符,而不是单个 rwo 标头,这不是预期的。

USERNAME    ;  ID;ACCOUNT_STATUS    ;CREATED  ;LOCK_DATE;PROFILE ;FAILED_LOGIN_ATTEMPTS                                                                                                           ;PASSWORD_REUSE_TIME                                                                                                             ;PASSWORD_VERIFY_FUNCTION
PASSWORD_LOCK_TIME                                                                                                              ;PASSWORD_REUSE_MAX                                                                                                              ;PASSWORD_GRACE_TIME
PASSWORD_LIFE_TIME

预期的结果是 -

【问题讨论】:

    标签: oracle-sqldeveloper sqlplus


    【解决方案1】:

    在附加以下参数后,CSV 假脱机恢复正确对齐

    col USERNAME for a25
    col FAILED_LOGIN_ATTEMPTS for a25
    col PASSWORD_VERIFY_FUNCTION for a25
    col PASSWORD_REUSE_MAX for a25
    col PASSWORD_LIFE_TIME for a25
    col PASSWORD_LOCK_TIME for a25
    col PASSWORD_GRACE_TIME for a25
    col PROFILE for a18
    col PASSWORD_REUSE_TIME for a25
    

    【讨论】:

      猜你喜欢
      • 2019-11-30
      • 2019-03-21
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2021-08-12
      • 1970-01-01
      相关资源
      最近更新 更多