Re: escape character for 'psql -c ' command

Поиск
Список
Период
Сортировка
От Gary Fu
Тема Re: escape character for 'psql -c ' command
Дата
Msg-id 4CE2B529.8050907@sigmaspace.com
обсуждение исходный текст
Ответ на Re: escape character for 'psql -c ' command  (Derrick Rice <derrick.rice@gmail.com>)
Ответы Re: escape character for 'psql -c ' command
Список pgsql-general
On 11/15/10 21:10, Derrick Rice wrote:
> Short answer: for simple commands, you can use shell-escaping of a
> double-quoted string.
>
> psql -c "\\copy \"Table\" from 'text file'"
>

This works on sh, but I tried this syntax on tcsh, it fails:

11:38am 72 gfu@modular:~/sybase2postgres> psql -c "\\copy \"Table\" from
'text file'"
Unmatched ".

How to make it work on tcsh ?

Thanks,
Gary



> Note: double \\ is intentional. You need to escape the backslash, which
> normally escapes other special characters, like $ and ". Watch out for
> other special characters though, which is why I prefer the long answer...
>
>
> Long answer: A *nix shell will concatenate string literals that are
> immediately following each other, even when they aren't the same type
> (single quoted or double quoted).  So the following:
>
> "abc"'def'hij"  (reads: double quote, abc, double quote, single quote,
> def, single quote, double quote, hij, double quote)
>
> is "abc" + 'def' + "hij" or "abcdefhij" to the shell
>
> So if you have a single-quoted string, to insert a single quote you (1)
> stop the single quoted string (2) start a double-quoted string (3) write
> a single quote as the content of the double-quoted string (4) stop the
> double-quoted string (5) restart the single quoted string.  All without
> any spaces (unless they are inside either the double or single quoted
> strings as part of your content).
>
> You can obviously insert 2 consecutive single quotes within a single
> double-quoted string - or any characters... just be aware you are in
> double-quotes now, so you need to escape special characters or go back
> to single quotes.
>
> Your example:
>
> psql -c ' Copy "Table" from '"'"'text file'"'"
>
> Derrick
>
> On Mon, Nov 15, 2010 at 6:17 PM, Gary Fu <gfu@sigmaspace.com
> <mailto:gfu@sigmaspace.com>> wrote:
>
>     Hi,
>
>     How do I escape both " and ' to be used in the 'psql -c ' command ?
>     For example, how to make the psql command {\copy "Table" from
>     'txt_file'} to be used in the psql with -c option (psql -c) ?
>     The "Table" has to be double quoted here.
>
>     Thanks,
>     Gary
>
>     --
>     Sent via pgsql-general mailing list (pgsql-general@postgresql.org
>     <mailto:pgsql-general@postgresql.org>)
>     To make changes to your subscription:
>     http://www.postgresql.org/mailpref/pgsql-general
>
>


В списке pgsql-general по дате отправления:

Предыдущее
От: Chris Barnes
Дата:
Сообщение: I want to create a read only database for a specified user.
Следующее
От: Craig Ringer
Дата:
Сообщение: Re: Postgres forums ... take 2