Como verificar se uma seção DB já existe?

1

Criamos um banco de dados de hive usando o script expect e com alguns outros comandos.

No caso, se executarmos o script de espera novamente na máquina que a seção já criou, obteremos isso:

ERROR hive already exists

Como podemos verificar se o hive do banco de dados já foi criado antes de criá-lo novamente?

E com essa verificação, podemos escapar do script esperar :

# 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

Meu script de expectativa: (do meu script 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"
.
.
.
.

Outro exemplo:

postgres=# CREATE DATABASE [IF NOT EXISTS] hive;
ERROR:  syntax error at or near "["
LINE 1: CREATE DATABASE [IF NOT EXISTS] hive;
                    ^
    
por yael 13.08.2017 / 15:56

1 resposta

1

Se você quiser usar o banco de dados do Hive, tente usando o hive diretamente (veja abaixo)

Resposta do PostgreSQL

Estouro de pilha Q & A Simular CRIAR BANCO DE DADOS SE NÃO EXISTE para o PostgreSQL?

Especifique que o PostgreSQL não possui suporte para SE NÃO EXISTE (como o grupo tem)

Uma das respostas simples mencionadas aqui é: consultar o banco de dados e somente se a consulta falhar - crie o banco de dados.

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

Resposta do Hive:

Você deve usar o comando com a opção [IF NOT EXISTS] :

CREATE DATABASE [IF NOT EXISTS] <database name>

Mais informações

Create Database Statement

Create Database is a statement used to create a database in Hive. A database in Hive is a namespace or a collection of tables. The syntax for this statement is as follows:

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

Here, IF NOT EXISTS is an optional clause, which notifies the user that a database with the same name already exists. We can use SCHEMA in place of DATABASE in this command. The following query is executed to create a database named userdb:

hive> CREATE DATABASE [IF NOT EXISTS] userdb;

or

hive> CREATE SCHEMA userdb;
    
por 13.08.2017 / 16:00