如何验证 DB hive 是否已经存在?

如何验证 DB hive 是否已经存在?

我们使用 Expect 脚本和其他一些命令创建一个 Hive 数据库。

如果我们在已经创建的 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 数据库,请尝试直接使用hive(见下文)

PostgreSQL 答案

堆栈溢出问答模拟 PostgreSQL 的 CREATE DATABASE IF NOT EXISTS?

指定 PostgreSQL 没有内置支持如果不存在(如蜂巢)

其中提到的简单答案之一是:查询数据库,并且只有在查询失败时才创建数据库。

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 是一个可选子句,它通知用户同名的数据库已经存在。我们可以在此命令中使用 SCHEMA 代替 DATABASE。执行以下查询来创建名为 userdb 的数据库:

hive> CREATE DATABASE [IF NOT EXISTS] userdb;

或者

hive> CREATE SCHEMA userdb;

相关内容