{"id":11202,"date":"2018-05-07T08:23:53","date_gmt":"2018-05-07T06:23:53","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/"},"modified":"2025-10-24T09:22:45","modified_gmt":"2025-10-24T07:22:45","slug":"idql-and-its-column-output","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/","title":{"rendered":"idql and its column output"},"content":{"rendered":"<h4>idql and its column output<\/h4>\n<p>A few days ago, I was reading an interesting blog from distinguished colleague Clemens Bleile with the title &#8220;sqlplus and its column output&#8221; (link here <a title=\"SQLPlus and its column output\" href=\"https:\/\/www.dbi-services.com\/blog\/sqlplus-and-its-column-output\/\" target=\"_blank\">https:\/\/www.dbi-services.com\/blog\/sqlplus-and-its-column-output\/<\/a>) and I said to myself: the lucky Oracle administrators and developers have sqlplus, a rather good, out of the box command-line tool to talk to their databases. What equivalent tool do we have with Documentum ? Well, we have mainly idql, which, to put it mildly, sucks. Unlike sqlplus, idql has no column formatting, no reporting, no variable substitution, no error trapping, actually almost nothing, not even command editing or command history (at least, under Unix\/Linux). It just reads DQL statements, passes them to the content server and displays back the received answer. Pretty basic. However, for their defense, the Documentum creators gave away the source code of an ancient version (look for $DOCUMENTUM\/share\/sdk\/example\/code\/idql.c), so it is relatively easy to enhance it the way you like.<br \/>\nNeedless to say, having a nicely displayed output is not possible within idql. Whereas sqlplus&#8217; column formatting allows to control the column width to make it narrower and thusly avoids those unending lines filled with spaces, in idql a query is displayed as is. For example, in sqlplus, &#8220;column mycol format A10&#8221; tells sqlplus to display the column mycol as an alphanumeric value in a field not larger than 10 characters; exceeding characters are wrapped around on the next line(s). However, if, many columns are SELECTed, long result lines are unvoidable in both sqlplus and idql and the solution proposed in Clemens&#8217; blog can help with idql too since it applies to the terminal as a whole.<br \/>\nHereafter though, I&#8217;d like to propose a few alternatives that don&#8217;t require another terminal software, although they may somewhat lack in interactivity. One of them uses the less command, another uses less + a named pipe and a third one a simple awk script to compact and reflow a query&#8217;s output. Here we go.<br \/>\n1. Use less command<br \/>\nIf reading the output can be done separately from entering the commands into idql, &#8220;less -S&#8221; is pretty cool:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\"># run the select and output the result into a text file;\nidql dmtest -Udmadmin -Pdmadmin -w100 &gt; tmp_file\nselect * from dm_sysobject\ngo\nquit\nEoQ<\/pre>\n<pre class=\"brush: bash; gutter: false; first-line: 1\"># now use less -S to examine the result;\nless -S tmp_file<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog12.png\" alt=\"blog1\" width=\"300\" height=\"194\" class=\"alignnone size-medium wp-image-23156\" \/><\/a><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog21.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog21.png\" alt=\"blog2\" width=\"300\" height=\"171\" class=\"alignnone size-medium wp-image-23157\" \/><\/a><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog31.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog31.png\" alt=\"blog3\" width=\"300\" height=\"220\" class=\"alignnone size-medium wp-image-23158\" \/><\/a><br \/>\nNow, it is possible to scroll left and right and have a good look at the result.<br \/>\nSome columns, though, are so wide and filled with trailing blanks that it is quite distracting. This will be taken care of later in the last alternative.<\/p>\n<p>2. A more interactive variant with less -S<br \/>\nIt is possible to stay in idql while the output is being redirected into a named pipe which is read by &#8220;less -S&#8221; and displayed in a second terminal. To do this, follow the steps below:<br \/>\na. Create a named pipe named idqlp:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">mknod -p idqlp<\/pre>\n<p>Contrary to the usual anonymous pipes, named pipes have, well, a name, and are created like files in a filesystem. As expected, like their counterparts, they can be written to and read from.<br \/>\nb. copy\/paste the following command, it will create a pre-processor script for the less command:<\/p>\n<pre class=\"brush: shell; gutter: false; first-line: 1\">cat - &lt;&lt;EoScript &gt; lesspipe.sh\n#! \/bin\/sh\n\n# must define LESSOPEN environment variable to be used;\n# export LESSOPEN=\"|~\/lesspipe.sh %s\"\n\ncase \"$1\" in\n   idqlp)\n      cat idqlp\n      ;;\n   *) exit 1\n      ;;\nesac\nexit $?\nEoScript<\/pre>\n<p>The preprocessor script will be invoked when less is launched, right before it. This is a nifty feature of less which allows to play tricks with binary files, e.g. decompressing them before viewing them (if they are compressed files). I guess less-ing a java class file could first invoke a decompiler and then pass the result to less. There is also a postprocessor for tasks to be performed after less exits, such as cleaning up the intermediate file created by the preprocessor. All this is very well presented in less&#8217; man page.<br \/>\nc. make it executable:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">chmod +x lesspipe.sh<\/pre>\n<p>d. copy\/paste the following command in a terminal, it will create the consumer script that will continuously be reading from the named pipe idqlp:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">cat - &lt;&lt;EoScript &gt; readpipe.sh\n#! \/bin\/bash\n\nexport LESSOPEN=\"|~\/lesspipe.sh %s\"\n\nwhile [ true ]; do\n   less -S idqlp\ndone\nEoScript<\/pre>\n<p>e. make it executable:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">chmod +x readpipe.sh<\/pre>\n<p>f. in the first terminal, run this script in the foreground:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">.\/readpipe.sh<\/pre>\n<p>g. in the second terminal, run idql with a redirection into the named pipe idqlp:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">idql dmtest -Udmadmin -Pdmadmin -w100 &gt; idqlp<\/pre>\n<p>f. now, type your DQL statements with or without those endless lines:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">execute show_sessions\n\ngo\n\nselect * from dm_sysobject\ngo\n\nselect * from dm_document\ngo<\/pre>\n<p>Result:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-23108\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog7.png\" alt=\"blog7\" width=\"300\" height=\"153\" \/><\/a><\/p>\n<p>The DQL output of the second terminal (bottom) is displayed in the first terminal (top) where it can be browsed by less.<br \/>\nThis trick works quite well as long as a few precautions are respected. As you know, a pipe blocks the producer when it gets full until the consumer starts reading it at the other end. Thus, idql is blocked as long as less has not finished reading its output; for short outputs, no special action is required but for those long listing, in order to force less to reach the end of the output, type shift-g in the less window; give it enough time so the DQL statement completes its output, then ctrl-C. idql is then released whereas the output can be quietly navigated from within less in the first terminal. Once done, BEFORE entering any new command in idql, quit less (command q) so the next cycle begins. Now, the next command can be typed in idql. Failure to do this can hang the consumer in the first terminal and the commands below must be used to get it back on track:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">ctrl-Z         # send the consumer into the background;\njobs -l        # identify the pid that's messed up;\nkill -9 pid    # send it ad patres;\n.\/readpipe.sh  # restart the consumer;<\/pre>\n<p>Or use the one-liner:<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">jobs -l | grep readpipe.sh | cut -d\\ -f3 | xargs kill -9<\/pre>\n<p>Sometimes, even the producer process must be restarted. If all this looks clumsy at first, once you get the habit of it, it becomes quite automatic.<br \/>\nThis alternative is nice because it avoids cluttering the command window: the DQL commands are separated from their output and therefore stay visible in the second terminal. Moreover, as illustrated, error messages don&#8217;t show in the less-ed output.<\/p>\n<p>3. The third alternative: compact the output<br \/>\nEventhough those pesky long lines are now tamed, the issue of those extra-wide columns mostly filled with blanks remains and this alternative is aimed at it.<br \/>\nFirstly, here is where we take our inspiration from, Oracle sqlplus. Consider the SQL query below:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog51.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-23094\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog51.png\" alt=\"blog5\" width=\"300\" height=\"219\" \/><\/a><br \/>\n&#8212; The USER_PASSWORD column is still too wide, let&#8217;s narrow it:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-23089\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog6.png\" alt=\"blog6\" width=\"300\" height=\"163\" \/><\/a><br \/>\nSee what happened here ? Column USER_PASSWORD&#8217;s text has been reflowed inside the column&#8217;s width, not truncated.<br \/>\nOK, we want all these 3 things:<br \/>\n. compact the columns by removing trainling blanks;<br \/>\n. control the columns width by resizing the way we like;<br \/>\n. introduce column wrapping if our width is too narrow;<br \/>\nObviously, since we don&#8217;t have the source code of idql, we cannot enhance the way it displays the query results so we will do this outside idql and in 2 steps, execute the query and capture its output to process it.<br \/>\nThe output processing is performed by the following awk script:<\/p>\n<pre class=\"brush: text; gutter: true; first-line: 1\">-- compact_wwa.awk;\n# Usage:\n#    gawk -v maxw=nn -f compact_wwa.awk file\n# or:\n#    cmd | gawk -v maxw=nn -f compact_wwa.awk\n# where:\n#     maxw is the maximum column width; characters outside this limit are wrapped around in their own column;\n# example:\n#     gawk -v maxw=50 -f compact_wwa.awk tmp_file  | less -S\n# C. Cervini, dbi-services.com\nBEGIN {\n   while (getline &amp;&amp; !match($0, \/^([0-9]+&gt; )+\/));\n   header = substr($0, RLENGTH + 1)\n   getline\n   nbFields = NF\n   fs[0] = 0; fw[0] = -1 # just so that fs[1] = 1, see below;\n   headerLine = \"\"; sepLine = \"\"\n   for (i = 1; i &lt;= NF; i++) {\n      fs[i] = fs[i - 1] + fw[i - 1] + 2\n      fw[i] = length($i)\n      sepLine = sepLine sprintf(\"%s  \", substr($0, fs[i], min(fw[i], maxw)))\n   }\n   printWithWA(header)\n   printf(\"%s\\n\", sepLine)\n}\n{\n   if (match($0, \/^\\([0-9]+ rows? affected\\)\/)) {\n      print\n      exit\n   }\n   printWithWA($0)\n}\nfunction printWithWA(S) {\n   do {\n      left_over = \"\"\n      for (i = 1; i &lt;= nbFields; i++) {\n         Min = min(fw[i], maxw)\n         printf(\"%s  \", substr(S, fs[i], Min))\n         subS = substr(S, fs[i] + Min, fw[i] - Min)\n         if (length(subS) &gt; 0) {\n            left_over = left_over sprintf(\"%-*s  \", fw[i], subS)\n         }\n         else\n            left_over = left_over sprintf(\"%*s  \", fw[i], \"\")\n      }\n      printf \"\\n\"\n      gsub(\/ +$\/, \"\", left_over)\n      S = left_over\n   } while (left_over)\n}\nfunction min(x, y) {\n   return(x &lt;= y ? x : y)\n}\n<\/pre>\n<p>Now, let&#8217;s put it to use:<\/p>\n<pre class=\"brush: sql; gutter: false; first-line: 1\">idql dmtest -Udmadmin -Pdmadmin &lt;&lt;EoQ | gawk -v maxw=35 -f compact_wwa.awk | less -S\nselect r_object_id, user_name, user_os_name, user_address, user_group_name, user_privileges, owner_def_permit, world_def_permit, group_def_permit, default_folder, user_db_name, description,\nacl_domain, acl_name, user_os_domain, home_docbase, user_state, client_capability, globally_managed, user_delegation, workflow_disabled, alias_set_id, user_source, user_ldap_dn, user_xprivileges,\nfailed_auth_attempt, user_admin, user_global_unique_id, user_login_name, user_login_domain, user_initials, USER_PASSWORD, user_web_page, first_failed_auth_utc_time, last_login_utc_time,\ndeactivated_utc_time, deactivated_ip_addr, root_log_dir\nfrom\n   dm_user\ngo\nexit\nEoQ<\/pre>\n<p>By the way, funny thing, here &#8220;select user_password&#8221; is not the same as &#8220;select USER_PASSWORD&#8221;. The first returns a sequence of asterisks while the second an ASCII representation of the encrypted password. The generated SQL explains why.<br \/>\n&#8220;select user_password&#8221; gets compiled into the SQL statement below:<br \/>\n<code><br \/>\nselect all '****************' as user_password from dm_user_sp  dm_user<br \/>\n<\/code><br \/>\nwhereas &#8220;select USER_PASSWORD&#8221; is the real one:<br \/>\n<code><br \/>\nselect all dm_user.USER_PASSWORD from dm_user_sp  dm_user<br \/>\n<\/code><br \/>\nUnlike unquoted column names in Oracle SQL, attribute names in DQL are case-sensitive !<br \/>\nAnd here is the result:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-23099\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog41.png\" alt=\"blog4\" width=\"300\" height=\"181\" \/><\/a><\/p>\n<p>The script takes one parameter, maxw, the maximum column width. If the columns have too many characters, they are wrapped around on the next line(s) until the whole column has been displayed.<\/p>\n<p>4. The altogether<\/p>\n<p>What if we want the above line compaction and column wrapping around but interactively like in alternative 2 ? Easy. Just edit the script readpipe.sh and change line<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">cat idqlp<\/pre>\n<p>to<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1\">cat idqlp | gawk -v maxw=35 -f compact_wwa.awk<\/pre>\n<p>Said otherwise, we are preprocessing idql&#8217;s output through the awk filter before giving it to less.<\/p>\n<p>A final alternative<\/p>\n<p>We can achieve the same result with dmawk by writing a generic procedure that takes a DQL query to execute and a maximum column width, or a list of columns name and width (like if we entered a sequence of &#8220;col mycol format &#8230;&#8221; in sqlplus) so everything is done on the fly, but, as they say, this is left as an exercise to the reader. Or, why not, maybe in a blog to come.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>idql and its column output A few days ago, I was reading an interesting blog from distinguished colleague Clemens Bleile with the title &#8220;sqlplus and its column output&#8221; (link here https:\/\/www.dbi-services.com\/blog\/sqlplus-and-its-column-output\/) and I said to myself: the lucky Oracle administrators and developers have sqlplus, a rather good, out of the box command-line tool to talk [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":11210,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[525],"tags":[],"type_dbi":[],"class_list":["post-11202","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-content-management"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>idql and its column output - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"idql and its column output\" \/>\n<meta property=\"og:description\" content=\"idql and its column output A few days ago, I was reading an interesting blog from distinguished colleague Clemens Bleile with the title &#8220;sqlplus and its column output&#8221; (link here https:\/\/www.dbi-services.com\/blog\/sqlplus-and-its-column-output\/) and I said to myself: the lucky Oracle administrators and developers have sqlplus, a rather good, out of the box command-line tool to talk [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-07T06:23:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-24T07:22:45+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3779\" \/>\n\t<meta property=\"og:image:height\" content=\"1863\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"idql and its column output\",\"datePublished\":\"2018-05-07T06:23:53+00:00\",\"dateModified\":\"2025-10-24T07:22:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/\"},\"wordCount\":1332,\"commentCount\":4,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog1.png\",\"articleSection\":[\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/\",\"name\":\"idql and its column output - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog1.png\",\"datePublished\":\"2018-05-07T06:23:53+00:00\",\"dateModified\":\"2025-10-24T07:22:45+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog1.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog1.png\",\"width\":3779,\"height\":1863},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/idql-and-its-column-output\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"idql and its column output\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/middleware-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"idql and its column output - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/","og_locale":"en_US","og_type":"article","og_title":"idql and its column output","og_description":"idql and its column output A few days ago, I was reading an interesting blog from distinguished colleague Clemens Bleile with the title &#8220;sqlplus and its column output&#8221; (link here https:\/\/www.dbi-services.com\/blog\/sqlplus-and-its-column-output\/) and I said to myself: the lucky Oracle administrators and developers have sqlplus, a rather good, out of the box command-line tool to talk [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/","og_site_name":"dbi Blog","article_published_time":"2018-05-07T06:23:53+00:00","article_modified_time":"2025-10-24T07:22:45+00:00","og_image":[{"width":3779,"height":1863,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog1.png","type":"image\/png"}],"author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"idql and its column output","datePublished":"2018-05-07T06:23:53+00:00","dateModified":"2025-10-24T07:22:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/"},"wordCount":1332,"commentCount":4,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog1.png","articleSection":["Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/","url":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/","name":"idql and its column output - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog1.png","datePublished":"2018-05-07T06:23:53+00:00","dateModified":"2025-10-24T07:22:45+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog1.png","width":3779,"height":1863},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/idql-and-its-column-output\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"idql and its column output"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11202"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11202\/revisions"}],"predecessor-version":[{"id":41168,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11202\/revisions\/41168"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11210"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11202"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}