【问题标题】:Show only populated columns of a Row仅显示行的填充列
【发布时间】:2019-05-16 01:24:13
【问题描述】:

一些 Oracle V$ 和 DBA_* 表有大量列;在某些情况下,只填充了极少数列。

例子

         Col_1    Col_2   Col_3 .... Col_10     Col_11
          XX       YY     NULL        NULL        mm
          XX2      YY2    NULL        NULL        mm2

上表有 11 列,但只有 3 列(col_1、Col_2 和 Col_11)有值。

是否有可用的脚本或实用程序在显示数据时切换(隐藏/显示)NULL 列,如下所示:

 null_column = HIDE 

 Col_1  : XX
 Col_2  : YY
 Col_11 : mm

 <blank line>

 Col_1  : XX2
 Col_2  : YY2
 Col_11 : mm2

 null_column = SHOW

 Col_1  : XX
 Col_2  : YY
 Col_3  : NULL
 Col_4  : NULL
 Col_5  : NULL
 Col_6  : NULL
 ............
 Col_11 : mm

【问题讨论】:

  • 这个要求最好在你的表现层中处理(例如Java、PHP、Python等)。

标签: sql oracle plsql


【解决方案1】:

对于大多数数据库工作,您应该在图形 IDE 中使用工作表,而不是在命令行实用程序中使用脚本。

我要在这里冒险并猜测这是一个巨大的XY problem - 您正在寻求解决方案的帮助,而不是您的实际问题。您是一名从事性能调整和数据分析的 DBA,并且正在尝试使用 SQL*Plus 来理解大量未知数据。但 SQL*Plus 永远不会是完成这项工作的好工具。

您不必完全放弃 SQL*Plus。对于脚本安装、快速更改或创建易于验证的测试用例,它仍然是一个有用的程序。但 1980 年代的程序无法始终处理我们在 2019 年使用的大量数据。

当我们在V$SQL 中查找性能问题时,我们通常是在寻找“错误”的东西。我们不知道那是什么提前。 V$SQL 中有 98 列,其中一列是一个巨大的 CLOB。如果没有某种类型的图形程序可以让我们滚动查看结果并单击并展开较大的值,则根本无法轻松调查该表。对于许多任务,像这样的简单界面比命令行好一千倍:

我这么说并不是因为我是一个出色的 DBA,拥有比其他人更多的技能。我这样说是因为我曾与比我更了解 Oracle 的 DBA 合作过,但他们无法跟上我的步伐,因为他们只使用过时的工具。

(如果我离开了,并且您出于正当理由需要此解决方案,我将删除此答案。但请在问题中准确说明您需要此解决方案的原因。)

【讨论】:

  • 浏览 V$SQL 的 98 列并不有趣,即使使用 TOAD 或 SQL*Developer。如果只需要查看几行,Tanel Poder 和 Tom Kyte 有一个解决方案,可以在这里访问:ferhatsengonul.wordpress.com/2014/12/10/…
  • @oradbanj 即使使用该脚本,您甚至无法在单个屏幕上查看 V$SQL 中的所有信息。它可能适用于琐碎的示例,但跨越数十行的真实 SQL 语句在命令行上看起来很糟糕。并且使用 GUI 比较行要容易得多,因为这些值可以彼此相邻。我的屏幕截图有点截断,但您可以看到第 3 行和第 4 行是相同的 SQL 语句和 SQL_ID。这些行 99% 相似,通过滚动和比较值,我们可以知道为什么同一语句有两行,以及它是否重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 2021-12-25
  • 2016-09-23
相关资源
最近更新 更多