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 지정에 대한 기본 지원은 없습니다.존재하지 않는 경우(벌집처럼)
언급된 간단한 대답 중 하나는 데이터베이스를 쿼리하고 쿼리가 실패한 경우에만 데이터베이스를 생성하는 것입니다.
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;