IT Log

CREATE/DROP/ALTER DATABASE 본문

SQL/Hive(HiveQL)

CREATE/DROP/ALTER DATABASE

newly0513 2021. 3. 24. 16:31
728x90
반응형

작성 방법

영어 대문자는 작성할 때 필수로 작성해야하는 부분( ex : CREATE )이고, ( ) 안에 영어 대문자로 파이프라인 | 과 함께 있는 경우는 선택적으로 반드시 하나는 작성해야하는 부분( ex : DATABASE|SCHEMA )이고,  [ ] 안에 들어가는 부분은 선택적 요소로, 상황에 맞게 사용이 가능한 부분( ex : IF NOT EXISTS )이고, 영어 소문자는 사용자가 임의로 작성이 가능한 부분( database_name)입니다.


CRAETE DATABASE

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [MANAGEDLOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];
  • DATABASE | SCHEMA : DATABASE나 SCHEMA는 서로 바꿔서 사용할 수 있고 같은 의미
  • IF NOT EXISTS : '이미 존재하는 경우'로 이미 존재하는 database_name이 있어도 오류가 발생하지 않음
  • COMMNET : 생성하는 database에 대한 설명
  • LOCATION : EXTERNAL TABLE의 기본경로를 지정
  • MANAGEDLOCATION : MANAGED TABLE의 기본 경로를 지정 ( Hive 4.0.0의 DATABASE에 추가 )
    • 해당 경로는 hive.metastore.warehouse.dir 설정경로에 포함되는 것이 좋음
  • WITH DBPROPERTIES : 생성되는 DATABASE의 속성을 설정

 

CREATE DATABASE 예시

-- 가장 평범한 예시
CREATE DATABASE hivetest;
-- 이미 hivetest라는 DATABASE가 존재하더라도 오류가 발생하지 않음
CREATE DATABASE IF NOT EXISTS hivetest;
CREATE DATABASE IF NOT EXISTS hivetest
COMMENT 'TEST DATABASE입니다.'
LOCATION '/user/public/test'
WITH DBPROPERTIES ('일자' = '2020-01-01');

DROP DATABASE

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
  • DATABASE | SCHEMA : DATABASE나 SCHEMA는 서로 바꿔서 사용할 수 있고 같은 의미
  • IF NOT EXISTS : '이미 존재하는 경우'로 이미 삭제한 database_name이어도 오류가 발생하지 않음
  • RESTRICT | CASCADE
    • RESTRICT : DEFAULT값이며, DATABASE가 비어 있지 않으면 실패
    • CASCADE : DATABASE의 TABLE도 삭제

 

DROP DATABASE 예시

-- 가장 평범한 예시
DROP DATABASE hivetest;
-- 이미 hivetest라는 DATABASE가 지웠더라도 오류가 발생하지 않음
DROP DATABASE IF NOT EXISTS hivetest;
-- hivetest가 TABLE이 존재하더라도 DROP
DROP DATABASE IF NOT EXISTS hivetest CASCADE;

ALTER DATABASE

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...);
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path;
ALTER (DATABASE|SCHEMA) database_name SET MANAGEDLOCATION hdfs_path;
  • DATABASE | SCHEMA : DATABASE나 SCHEMA는 서로 바꿔서 사용할 수 있고 같은 의미

※ LOCATION과 MANAGEDLOCATION은 각각 Hive 2.4.0, Hive 4.0.0 이후 버전에서 사용가능합니다.

 

 

DROP DATABASE 예시

-- DBPROPERTIES
ALTER DATABASE hivetest SET DBPROPERTIES ('일자' = '2020-12-31');
-- OWNER / ROLE
ALTER DATABASE hivetest SET OWNER USER hive;
ALTER DATABASE hivetest SET OWNER ROLE SELECT;
-- LOCATION ( Hive 2.4.0 이후버전 )
ALTER DATABASE hivetest SET LOCATION '/user/public/new';

-- 새로 만들어지는 TABLE에 한해서 변경된 위치로 적용됨
-- 기존 TABLE들의 경로는 기존 그대로 유지
-- MANAGEDLOCATION ( Hive 4.0.0 이후 )
ALTER DATABASE hivetest SET MANAGEDLOCATION '/user/public/new';

-- 새로 만들어지는 TABLE에 한해서 변경된 위치로 적용됨
-- 기존 TABLE들의 경로는 기존 그대로 유지

DATABASE 관련 명령어

-- Database 조회
SHOW DATABASES;
-- 특정 Database 조회
SHOW DATABASES LIKE 'h*';
-- Database 변경/사용
USE database_name;
-- 현재 Database 조회
SELECT current_databse();
-- Database 정보 조회
DESCRIBE DATABASE database_name;

-- Database 정보 조회(확장)
DESCRIBE DATABASE EXTENDED database_name;
-- 현재 Database 출력
set hive.cli.print.current.db=true;

-- 현재 Database 미출력
set hive.cli.print.current.db=false;

참조 : cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

728x90
반응형

'SQL > Hive(HiveQL)' 카테고리의 다른 글

CREATE/DROP/TRUNCATE TABLE  (0) 2021.03.24
ALTER TABLE/COLUMN & PARTITION  (0) 2021.03.24
SELECT  (0) 2021.03.24
Show  (0) 2021.02.09
Comments