【问题标题】:Output key, value pairs with sqlplus使用 sqlplus 输出键、值对
【发布时间】:2013-07-20 01:56:47
【问题描述】:

我正在使用sqlplus来输出表格的内容:

select * from my_table;

输出与此类似:

ID
-------------
FIELD1
----------------
FIELD2
----------------
someid
field 1 content
field 2 content

我尝试了许多页面格式选项的组合。我可以通过设置headpagestermoutechofeedlinesize 来格式化表格中的输出。

但我想以(键,值)方式输出值,如下所示:

ID = someid
FIELD1 = field 1 content
FIELD2 = field 2 content

分隔符和格式并不重要,只要我每行有一列即可。

是否可以只使用 sqlplus ?我想避免编写脚本。在这台特定的机器(我无法安装任何东西的设备)上,我只有 bash、perl 和 Python 2.4。

【问题讨论】:

    标签: oracle sqlplus key-value


    【解决方案1】:

    我不知道有任何 SQLPlus 设置可以为您提供这种格式,但可以通过蛮力来实现。像这样的东西应该可以工作:

    SELECT
      'ID = ' || id || CHR(10) ||
      'FIELD1 = ' || field1 || CHR(10) ||
      'FIELD2 = ' || field2
    FROM my_table
    

    附录 OP 询问是否可以在 SQLPlus 中将 CHR(10) 设为 COLSEP 值。我最初认为“没办法”,但偶然发现this StackOverflow answer 如何将COLSEP 设置为选项卡,并将其修改为CHR(10)。我不太明白它是如何/为什么起作用的,但它确实有效:

    col NEWLINE# new_value NEWLINE NOPRINT
    select chr(10) NEWLINE# from dual;
    set colsep "&NEWLINE"
    

    【讨论】:

    • 效果很好,谢谢! CHR(10) 有可能被设置为 set colsep 吗?
    • 我不知道这一点,但事实证明它可以 - 请查看我的更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多