mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
Suggest shell here-documents instead of psql -c for multiple commands.
The documentation suggested using "echo | psql", but not the often-superior alternative of a here-document. Also, be more direct about suggesting that people avoid -c for multiple commands. Per discussion.
This commit is contained in:
parent
02b61dd08f
commit
1ea081bbd7
@ -83,14 +83,15 @@ PostgreSQL documentation
|
|||||||
(<filename>psqlrc</filename> and <filename>~/.psqlrc</filename>) are
|
(<filename>psqlrc</filename> and <filename>~/.psqlrc</filename>) are
|
||||||
ignored with this option.
|
ignored with this option.
|
||||||
</para>
|
</para>
|
||||||
<para><replaceable class="parameter">command</replaceable> must be either
|
<para>
|
||||||
|
<replaceable class="parameter">command</replaceable> must be either
|
||||||
a command string that is completely parsable by the server (i.e.,
|
a command string that is completely parsable by the server (i.e.,
|
||||||
it contains no <application>psql</application>-specific features),
|
it contains no <application>psql</application>-specific features),
|
||||||
or a single backslash command. Thus you cannot mix
|
or a single backslash command. Thus you cannot mix
|
||||||
<acronym>SQL</acronym> and <application>psql</application>
|
<acronym>SQL</acronym> and <application>psql</application>
|
||||||
meta-commands with this option. To achieve that, you could
|
meta-commands with this option. To achieve that, you could
|
||||||
pipe the string into <application>psql</application>, like
|
pipe the string into <application>psql</application>, for example:
|
||||||
this: <literal>echo '\x \\ SELECT * FROM foo;' | psql</literal>.
|
<literal>echo '\x \\ SELECT * FROM foo;' | psql</literal>.
|
||||||
(<literal>\\</> is the separator meta-command.)
|
(<literal>\\</> is the separator meta-command.)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@ -102,6 +103,19 @@ PostgreSQL documentation
|
|||||||
<application>psql</application>'s standard input. Also, only
|
<application>psql</application>'s standard input. Also, only
|
||||||
the result of the last SQL command is returned.
|
the result of the last SQL command is returned.
|
||||||
</para>
|
</para>
|
||||||
|
<para>
|
||||||
|
Because of these legacy behaviors, putting more than one command in
|
||||||
|
the <option>-c</option> string often has unexpected results. It's
|
||||||
|
better to feed multiple commands to <application>psql</application>'s
|
||||||
|
standard input, either using <application>echo</application> as
|
||||||
|
illustrated above, or via a shell here-document, for example:
|
||||||
|
<programlisting>
|
||||||
|
psql <<EOF
|
||||||
|
\x
|
||||||
|
SELECT * FROM foo;
|
||||||
|
EOF
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user