[pgsql-jp: 41721] Re: ユーザ名のダブルクォート
Tatsuo Ishii
ishii @ sraoss.co.jp
2014年 9月 3日 (水) 11:57:02 JST
境田さん
石井です。
SQLの規格では、ユーザ名は識別子扱いで、シングルクォートで囲むとリテラル
になってしまうので、難しいと思います。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp
> 境田と申します。
>
> しばらくPostgreSQLから離れていましたので、初歩的な質問で
> 恐縮です。
>
> 現在、PostgreSQL 8.4.20 を使用しています。ハイフォン付の
> ユーザ名のパスワード変更は次のようにダブルクォートで囲む
> 必要があります。
>
> alter role "xxx-xxx" with password 'yyyyyyyy';
>
> しかし、alte文全体をダブルクォートで囲む必要がある場合、
> ユーザ名をシングルクォートで囲むことができれば便利です。
>
> 「ユーザ名をシングルクォートで囲む文法」を許さないという
> 理由はあるのでしょうか?
>
> 可能ならば、PostgreSQLのバージョンアップ項目に追加してい
> ただきたいな〜と思っています。
>
> ※ ユーザ名をシングルクォートで囲みたいという例
>
> bashスクリプト内で、expectを使用してpsqlの自動化を行う
> 場合などです。
>
> (一部抜粋)
> expect -c "
> set timeout 5
> spawn su - $pgsql
> send \"psql\n\"
> expect \"パスワード:\"
> send \"$passwd\n\"
> expect \"$pgsql=# \"
> send \"alter role $userid with password '$passwd';\n\"
> send \"\\\q\n\"
> send \"exit\n\"
> interact
> "
>
> --
> SAKAIDA Masaaki
>
pgsql-jp メーリングリストの案内