public inbox for [email protected]  
help / color / mirror / Atom feed
From: Ron Johnson <[email protected]>
To: pgsql-general <[email protected]>
Subject: Re: Better way to process records in bash?
Date: Thu, 12 Sep 2024 15:43:59 -0400
Message-ID: <CANzqJaAJe-HhKGtfvJXtL1q=U6FsJ+-hcRh=Wvzy=MKyAvTzeQ@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <CANzqJaCaLwc6rOK7O8PkCgVDi_8fg6duzdUrMy0rtn_tQL144g@mail.gmail.com>
	<[email protected]>

On Thu, Sep 12, 2024 at 3:30 PM Christoph Moench-Tegeder <[email protected]>
wrote:

> ## Ron Johnson ([email protected]):
>
> > I need to process table records in a bash script.  Currently, I read them
> > using a while loop and redirection.  The table isn't that big (30ish
> > thousand rows), and performance is adequate, but am always looking for
> > "better".
>
> Use python, or any other sane language, and don't do bash in python.
> Anything non-trivial is unreasonably hard to get really right when
> using shell.
>
> Take this example (even when allowing some fuzz with the variables):
> > Here's the current code:
> > declare f1 f3 f8
> > while IFS='|' read f1 f3 f8; do
> >     something f8 f3 f1
> > done < <(psql -XAt -c "select f1, f3, f8 from some.table_name;")
>
> What happens when f3
>  a) is NULL?
>  b) contains a '|' character?
>  c) contains spaces? (this one depends on how exactly you're handling
>     the shell variables).
> This might be fine if your data is only NOT NULL numbers, but that's
> already quite a limitation on your data.
>

Good points.  Shouldn't be relevant in my situation, but
defensive programming never hurts.

-- 
Death to America, and butter sauce.
Iraq lobster!


view thread (2+ messages)  latest in thread

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: Better way to process records in bash?
  In-Reply-To: <CANzqJaAJe-HhKGtfvJXtL1q=U6FsJ+-hcRh=Wvzy=MKyAvTzeQ@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