public inbox for [email protected]
help / color / mirror / Atom feedFrom: Ron Johnson <[email protected]>
Cc: pgsql-general <[email protected]>
Subject: Re: psql --html and to_char()
Date: Thu, 28 Aug 2025 01:31:41 -0400
Message-ID: <CANzqJaAMDU6eRWOjetDQ_BK9uvGau=2q20mbv_jQqZR4Gd2Ccg@mail.gmail.com> (raw)
In-Reply-To: <CAKAnmmKv=A6d=q_CqYPP6a7qS2+tacYV4WOzXziBuXq3MPTwjw@mail.gmail.com>
References: <CANzqJaAJVQVa0Wbx1fHv5n7zfp9ZyCXZMPqJF_JLTBo68ToNeA@mail.gmail.com>
<CAKAnmmKv=A6d=q_CqYPP6a7qS2+tacYV4WOzXziBuXq3MPTwjw@mail.gmail.com>
On Wed, Aug 27, 2025 at 6:13 PM Greg Sabino Mullane <[email protected]>
wrote:
> On Wed, Aug 27, 2025 at 11:28 AM Ron Johnson <[email protected]>
> wrote:
>
>> Is there a way around this, other than writing my own HTMLifier?
>>
>
> Not unless your to_char() output can be coerced back into a numeric. (for
> the archives sake, see fe_utils/print.c for the complete list of
> right-aligned columns: int family, float, numeric, oid, xid, cid, and the
> when-will-it-finally-die money type)
>
Easier to write a generic shell function.
HTMLify_csv()
{
local -rn pFormats="$1"
local line
local -a lFields
printf '<table border=1><font size="2">\n'
read -r line
IFS='|' read -r -a lFields <<< "${line}"
local -i lFldCnt=${#lFields[@]}
printf '<tr>'
for ((i=0; i<$lFldCnt; i++)); do printf '<th align="%s">%s</th>' center
"${lFields[i]}"; done
printf "</tr>\n"
while IFS= read -r line
do
[[ $line =~ rows?\)$ ]] && { printf '<tr><td>%s</td></tr>\n'
"$line"; continue; }
IFS='|' read -r -a lFields <<< "${line}"
printf '<tr>'
for ((i=0; i<$lFldCnt; i++))
do
printf '<td align="%s">%s</td>' "${pFormats[i]}" "${lFields[i]}"
done
printf "</tr>\n"
done
printf '</table>\n'
}
declare -a Formats=(right left)
psql -XAc "select to_char(oid::integer, '99,999') as oid, datname from
pg_database;" | HTMLify_csv Formats
It requires an array that describes how you want each column aligned.
--
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> lobster!
view thread (2+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: psql --html and to_char()
In-Reply-To: <CANzqJaAMDU6eRWOjetDQ_BK9uvGau=2q20mbv_jQqZR4Gd2Ccg@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox