Thread: [HACKERS] psql --batch
Hi all
I find myself regurgitating the incantation
psql -qAtX -v ON_ERRORS_STOP=1
quite a bit. It's not ... super friendly.
It strikes me that we could possibly benefit from a 'psql --batch' option.
--
Thoughts?
> I find myself regurgitating the incantation > > psql -qAtX -v ON_ERRORS_STOP=1 > > quite a bit. It's not ... super friendly. > > It strikes me that we could possibly benefit from a 'psql --batch' option. > > Thoughts? The link between -qAtX and "batch" is not that fully obvious, especially the unaligned tuples-only part. If so, why not some -F <tab> as well? ISTM that the real pain is the "-v ON_ERRORS_STOP=1" which I occasionally encountered as well, the other one letter ones are not too bad. Maybe it would be enough to have a shortcut for this one, say "-B"? alias? -- Fabien.
On 28 August 2017 at 14:56, Fabien COELHO <coelho@cri.ensmp.fr> wrote:
I find myself regurgitating the incantation
psql -qAtX -v ON_ERRORS_STOP=1
quite a bit. It's not ... super friendly.
It strikes me that we could possibly benefit from a 'psql --batch' option.
Thoughts?
The link between -qAtX and "batch" is not that fully obvious, especially the unaligned tuples-only part. If so, why not some -F <tab> as well?
q: quiet
Pretty much always wanted for a batch mode run of anything.
A: unaligned tuples
Because alignment is pretty much never useful when you're parsing result sets with scripting (splitting, cut, etc) and just makes everything harder. The alignment psql uses isn't fixed, after all.
t: tuples-only
Headers just make everything more annoying to parse, and force you to do extra work to skip them. If you're running batch code you know the headers because you used a column-list form SELECT, or should've. You're unlikely to be ingesting them and using them to split up the tuple anyway. I think this one is a bit more arguable than the first two, though, as I can at least think of some cases where you might want it.
X: skip .psqlrc
Reliable, portable scripted psql shouldn't be using the local .psqlrc IMO. It's likely to just break things in exciting ways. But I can see it being reasonable to require this option to be supplied separately and just document it as "recommended" with --batch.
2017-08-28 8:56 GMT+02:00 Fabien COELHO <coelho@cri.ensmp.fr>:
I find myself regurgitating the incantation
psql -qAtX -v ON_ERRORS_STOP=1
quite a bit. It's not ... super friendly.
It strikes me that we could possibly benefit from a 'psql --batch' option.
Thoughts?
The link between -qAtX and "batch" is not that fully obvious, especially the unaligned tuples-only part. If so, why not some -F <tab> as well?
ISTM that the real pain is the "-v ON_ERRORS_STOP=1" which I occasionally encountered as well, the other one letter ones are not too bad. Maybe it would be enough to have a shortcut for this one, say "-B"?
I agree with last sentence. I don't think so -qAtX are expected always, but "-v ON_ERROS_STOP=1" is pretty often.
What do you think about long option "---on-errors-stop" ?
Regards
Pavel
alias?
--
Fabien.
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
>> ISTM that the real pain is the "-v ON_ERRORS_STOP=1" which I occasionally >> encountered as well, the other one letter ones are not too bad. Maybe it >> would be enough to have a shortcut for this one, say "-B"? > > I agree with last sentence. I don't think so -qAtX are expected always, but > "-v ON_ERRORS_STOP=1" is pretty often. Yep. I often "\set" that in the script. > What do you think about long option "--on-errors-stop" ? It does not really relieve the typing pain Craig is complaining about, but it would be ok as the long option version if -B is added, and it is auto-completion friendly. -- Fabien.
2017-08-28 9:33 GMT+02:00 Fabien COELHO <coelho@cri.ensmp.fr>:
ISTM that the real pain is the "-v ON_ERRORS_STOP=1" which I occasionally
encountered as well, the other one letter ones are not too bad. Maybe it
would be enough to have a shortcut for this one, say "-B"?
I agree with last sentence. I don't think so -qAtX are expected always, but
"-v ON_ERRORS_STOP=1" is pretty often.
Yep. I often "\set" that in the script.What do you think about long option "--on-errors-stop" ?
It does not really relieve the typing pain Craig is complaining about, but it would be ok as the long option version if -B is added, and it is auto-completion friendly.
ok
Pavel
--
Fabien.
On 28 August 2017 at 15:34, Pavel Stehule <pavel.stehule@gmail.com> wrote:
2017-08-28 9:33 GMT+02:00 Fabien COELHO <coelho@cri.ensmp.fr>:ISTM that the real pain is the "-v ON_ERRORS_STOP=1" which I occasionally
encountered as well, the other one letter ones are not too bad. Maybe it
would be enough to have a shortcut for this one, say "-B"?
I agree with last sentence. I don't think so -qAtX are expected always, but
"-v ON_ERRORS_STOP=1" is pretty often.
Yep. I often "\set" that in the script.What do you think about long option "--on-errors-stop" ?
It does not really relieve the typing pain Craig is complaining about, but it would be ok as the long option version if -B is added, and it is auto-completion friendly.
This doesn't really address the original issue though, that it's far from obvious how to easily and correctly script psql.
I guess there's always the option of a docs patch for that. *shrug*
I'll see what others have to say.
> This doesn't really address the original issue though, that it's far from > obvious how to easily and correctly script psql. That is another interesting argument. I understood that the issue was having to type these options, but now it is also to remember which one are relevant and wanted, which is a little different and more justifiable as an option. On that account, ISTM that '|' as a field separator is debatable, that pager should be turned off... and maybe a few other things. -- Fabien.
On 28 August 2017 at 16:23, Fabien COELHO <coelho@cri.ensmp.fr> wrote:
This doesn't really address the original issue though, that it's far from
obvious how to easily and correctly script psql.
That is another interesting argument. I understood that the issue was having to type these options, but now it is also to remember which one are relevant and wanted, which is a little different and more justifiable as an option.
On that account, ISTM that '|' as a field separator is debatable, that pager should be turned off... and maybe a few other things.
I agree that | is a bit iffy, but so's anything really. null bytes aren't usable for all scripts, and nothing else cannot also be output in the data its self. No easy answers there. In cases where I expect that to be an issue I sometimes use \COPY ... TO STDOUT WITH (FORMAT CSV) though.
2017-08-28 11:05 GMT+02:00 Craig Ringer <craig@2ndquadrant.com>:
On 28 August 2017 at 16:23, Fabien COELHO <coelho@cri.ensmp.fr> wrote:This doesn't really address the original issue though, that it's far from
obvious how to easily and correctly script psql.
That is another interesting argument. I understood that the issue was having to type these options, but now it is also to remember which one are relevant and wanted, which is a little different and more justifiable as an option.
On that account, ISTM that '|' as a field separator is debatable, that pager should be turned off... and maybe a few other things.Good point re pager, though it's turned off automatically when stdout isn't a terminal, so in practice that'll only matter if you're using something like 'expect' that uses a pty. Still worth doing.I agree that | is a bit iffy, but so's anything really. null bytes aren't usable for all scripts, and nothing else cannot also be output in the data its self. No easy answers there. In cases where I expect that to be an issue I sometimes use \COPY ... TO STDOUT WITH (FORMAT CSV) though.
I don't doubt about a sense of this configuration - but this specific combination depends on usage - so I don't think so using special option is good idea.
Regards
Pavel
--
> I don't doubt about a sense of this configuration - but this specific > combination depends on usage - so I don't think so using special option is > good idea. Although I agree with you that detailed settings are definitely debatable, I'd say that at least it would be a more reasonable starting point for scripting than the default configuration which is more interactive usage oriented. So even if unperfect, one is free to update defaults to suit more closely their needs, eg "psql -B -F ':' ...", at least most of the scripting conviniencies are already there. I think that such a scripting mode should also imply --no-readline. -- Fabien.