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 по дате отправления: