web-dev-qa-db-ja.com

大文字を含むデータベース名を削除/作成する方法は?

たとえば、私のPostgresqlデータベース名はAjpです

この名前のデータベースをドロップ/作成することはできません。 Ajp

ドロップ用のスクリプトは

cd /D D:\\Apps
cd RSTAR PGSQL DOTCONNECT
cd bin
cd Debug
cd PG
psql -U postgres  -d postgres -c "DROP DATABASE  Ajp "

これを実行しているときにこのエラーが発生しました

D:\ Apps\RSTAR PGSQL DOTCONNECT\bin\Debug\PG> psql -U postgres -d postgres -c "DR OP DATABASE Ajp"エラー:データベース "ajp"は存在しません

私は試した psql -U postgres -d postgres -c "DROP DATABASE 'Ajp' "(引用符で囲まれたDB名)

再びエラーが発生しました

エラー:「 'Ajp'」またはその近くの構文エラー1行目:DROP DATABASE 'Ajp'

この問題をどのように修正しますか? (コメントしないでくださいchange your dbname to lower-case

using : "PostgreSQL 9.2.4, compiled by Visual C++ build 1600, 32-bit"

この問題の解決策は次のとおりです

  • Sholudはエスケープ文字を使用します\
  • psql -U postgres -d postgres -c "DROP DATABASE \"Ajp\";"

    コメントの下の を参照してください

21
Vivek S.

大文字と小文字を区別するSQL識別子は、二重引用符で囲む必要があります。

DROP DATABASE  "Ajp";

コマンドラインを介して渡した場合、Windowsでそれらが適切に保存されているかどうかはわかりません。

これをSQLスクリプトに入れて、スクリプト名をpsqlに渡す必要がある場合があります。

有効な識別子の詳細については、マニュアルを参照してください: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

32