Using \pset format csv means overwriting field sep every time - nobody uses |
Yep. The alternative is to have a csv-specific separator variable, which does not seem very useful, must be remembered, but this is indeed debatable.
I think so dependency on order of psql arguments is significant problem
This is intentional, and this issue/feature already exists, the last argument overwrite previous settings thus will win, eg:
psql --pset=format=troff --html -c 'SELECT 1'
Will output in html, not in troff.
Can we introduce some format specific default separators - if we would not to introduce csv_field_sep options?
It should not be hard. All formats can has '|' like now, and csv can have a ',' - then if field separator is not explicit, then default field separator is used, else specified field separator is used.
You can see my idea in attached patch
Regards
Pavel
postgres=# \pset format csv Output format is csv. postgres=# select * from foo; a,b,c 1,2,Hello 3,4,Nazdar postgres=# \pset fieldsep ; Field separator is ";". postgres=# select * from foo; a;b;c 1;2;Hello 3;4;Nazdar
The default fieldsep should be "off" that means so format defaults are used. ',' is used for CSV, | for any else.
So all will work like now, but there will be bigger freedom with new format design. Now, all formats with possibility to setting fieldsep, should to share default '|', what I think, is not practical.