コマンドラインでpsqlコマンドでSQLを実行する時に、SQLに「'(シングルクォーテーション)」が含まれている場合の対処方法

コマンドラインでpsqlコマンドを実行する場合、

psql -U postgres -c '(シングルクォーテーション)実行するSQL'(シングルクォーテーション) DB名

とする。

この場合、「実行するSQL」の中に「'(シングルクォーテーション)」が入っている時は、どうしたよいか。

例えば、実行するSQLを「copy テーブル名 to '(シングルクォーテーション)出力先'(シングルクォーテーション) データベース名」とした場合、「出力先」を囲む「'(シングルクォーテーション)」は、そのまま書いてよいだろうか。

《エラーになるコマンド例》
psql -U postgres -c 'copy nobuneko_table1 to '/home/nobuneko/tmp/test1.txt'' nobuneko_database

ERROR: syntax error at or near "/" at character 23
LINE 1: copy nobuneko_table1 to /home/nobuneko/tmp/test1.txt

そのまま「'(シングルクォーテーション)」を書くのでは、エラーになるようだった。

'(シングルクォーテーション)のエスケープ文字などがあるのだろうか、と考えて試したが、うまくいかず、さて、どうしようか、と思って適当に試していたら、あっさりと解決した。

《成功するコマンド例》
psql -U postgres -c "copy nobuneko_table1 to '/home/nobuneko/tmp/test1.txt'" nobuneko_database

「実行するSQL」を「'(シングルクォーテーション)」ではなく、「"(ダブルクォーテーション)」で囲めばよかったようだ。

簡単なことだったが、知らないと、これだけ悩んでしまう...。

※上記は、PostgreSQL 8.1で試した場合の例。

前へ

IE9でMovable Type 4のリッチテキストエディタが使えない場合の対策方法

次へ

Windows 7のコマンド プロンプトで使用できるコマンド一覧(helpコマンドで確認)