DBハイブがすでに存在するかどうかを確認するには?

DBハイブがすでに存在するかどうかを確認するには?

Expectスクリプトやその他のコマンドを使用してHiveデータベースを作成します。

作成したハイブマシンでExpectスクリプトを再実行すると、次のような結果が得られます。

エラーハイブがすでに存在しています。

次のような場合はどうすれば確認できますか?データベースハイブが作成されました。作り直す前に?

この検証によって私たちは逃げることができます台本が期待される:

# su - postgres
 Last login: Sun Aug 13 11:12:03 UTC 2017 on pts/0
 -bash-4.2$ psql
 psql (9.2.13)
 Type "help" for help.

postgres=# CREATE DATABASE hive;
ERROR:  database "hive" already exists

私の予想スクリプト:(私のbashスクリプトから)

set timeout -1

#exec the scripts

spawn timeout 60 ssh root@IP
expect "#"
spawn su - postgres
expect "$"
send "psql\n"
expect "=#"
send "CREATE DATABASE hive;\n"
.
.
.
.

他の例:

postgres=# CREATE DATABASE [IF NOT EXISTS] hive;
ERROR:  syntax error at or near "["
LINE 1: CREATE DATABASE [IF NOT EXISTS] hive;
                    ^

ベストアンサー1

Hive データベースを使用するには:ハイブを直接使用(下記参照)

PostgreSQLの答え

スタックオーバーフローQ&A存在しない場合は、PostgreSQLのCREATE DATABASEをシミュレートしますか?

PostgreSQLの指定に対する基本的なサポートはありません。存在しない場合(ハニカムのように)

上記の簡単な答えの1つは、データベースを照会し、照会が失敗した場合にのみデータベースを生成することです。

psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname = 'my_db'" | grep -q 1 || psql -U postgres -c "CREATE DATABASE my_db"

ハイブの答え:

オプションでコマンドを使用する必要があります。【ない場合】:

CREATE DATABASE [IF NOT EXISTS] <database name>

追加情報

データベース文の作成

Create Database は、Hive でデータベースを作成するために使用されるステートメントです。 Hiveのデータベースは名前空間またはテーブルの集まりです。この文の構文は次のとおりです。

CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name>

ここで、IF NOT EXISTS は、同じ名前のデータベースがすでに存在することをユーザーに通知するオプションの句です。このコマンドでは、DATABASEの代わりにSCHEMAを使用できます。次のクエリを実行して、userdbというデータベースを作成します。

hive> CREATE DATABASE [IF NOT EXISTS] userdb;

または

hive> CREATE SCHEMA userdb;

おすすめ記事