USE 문

USE 문 (USE Statements)

USE 문은 현재 데이터베이스나 카탈로그(catalog)를 설정하거나, 모듈의 해석 순서(resolution order)와 활성화 상태를 변경하는 데 사용돼요.

출처: 문서

본문

USE 문 실행하기 (Run a USE statement)

USE 문은 TableEnvironmentexecuteSql() 메서드로 실행할 수 있어요. executeSql() 메서드는 USE 연산이 성공하면 'OK'를 반환하고, 그렇지 않으면 예외를 던져요. Python에서는 execute_sql(), SQL CLI에서는 SQL CLI에서 실행해요.

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);

// create a catalog
tEnv.executeSql("CREATE CATALOG cat1 WITH (...)");
tEnv.executeSql("SHOW CATALOGS").print();
// +-----------------+
// |    catalog name |
// +-----------------+
// | default_catalog |
// | cat1            |
// +-----------------+

// change default catalog
tEnv.executeSql("USE CATALOG cat1");

tEnv.executeSql("SHOW DATABASES").print();
// databases are empty
// +---------------+
// | database name |
// +---------------+
// +---------------+

// create a database
tEnv.executeSql("CREATE DATABASE db1 WITH (...)");
tEnv.executeSql("SHOW DATABASES").print();
// +---------------+
// | database name |
// +---------------+
// |        db1    |
// +---------------+

// change default database
tEnv.executeSql("USE db1");

// change module resolution order and enabled status
tEnv.executeSql("USE MODULES hive");
tEnv.executeSql("SHOW FULL MODULES").print();
// +-------------+-------+
// | module name |  used |
// +-------------+-------+
// |        hive |  true |
// |        core | false |
// +-------------+-------+
val env = StreamExecutionEnvironment.getExecutionEnvironment()
val tEnv = StreamTableEnvironment.create(env)

// create a catalog
tEnv.executeSql("CREATE CATALOG cat1 WITH (...)")
tEnv.executeSql("SHOW CATALOGS").print()
// +-----------------+
// |    catalog name |
// +-----------------+
// | default_catalog |
// | cat1            |
// +-----------------+

// change default catalog
tEnv.executeSql("USE CATALOG cat1")

tEnv.executeSql("SHOW DATABASES").print()
// databases are empty
// +---------------+
// | database name |
// +---------------+
// +---------------+

// create a database
tEnv.executeSql("CREATE DATABASE db1 WITH (...)")
tEnv.executeSql("SHOW DATABASES").print()
// +---------------+
// | database name |
// +---------------+
// |        db1    |
// +---------------+

// change default database
tEnv.executeSql("USE db1")

// change module resolution order and enabled status
tEnv.executeSql("USE MODULES hive")
tEnv.executeSql("SHOW FULL MODULES").print()
// +-------------+-------+
// | module name |  used |
// +-------------+-------+
// |        hive |  true |
// |        core | false |
// +-------------+-------+
table_env = StreamTableEnvironment.create(...)

# create a catalog
table_env.execute_sql("CREATE CATALOG cat1 WITH (...)")
table_env.execute_sql("SHOW CATALOGS").print()
# +-----------------+
# |    catalog name |
# +-----------------+
# | default_catalog |
# | cat1            |
# +-----------------+

# change default catalog
table_env.execute_sql("USE CATALOG cat1")

table_env.execute_sql("SHOW DATABASES").print()
# databases are empty
# +---------------+
# | database name |
# +---------------+
# +---------------+

# create a database
table_env.execute_sql("CREATE DATABASE db1 WITH (...)")
table_env.execute_sql("SHOW DATABASES").print()
# +---------------+
# | database name |
# +---------------+
# |           db1 |
# +---------------+

# change default database
table_env.execute_sql("USE db1")

# change module resolution order and enabled status
table_env.execute_sql("USE MODULES hive")
table_env.execute_sql("SHOW FULL MODULES").print()
# +-------------+-------+
# | module name |  used |
# +-------------+-------+
# |        hive |  true |
# |        core | false |
# +-------------+-------+
Flink SQL> CREATE CATALOG cat1 WITH (...);
[INFO] Catalog has been created.

Flink SQL> SHOW CATALOGS;
default_catalog
cat1

Flink SQL> USE CATALOG cat1;

Flink SQL> SHOW DATABASES;

Flink SQL> CREATE DATABASE db1 WITH (...);
[INFO] Database has been created.

Flink SQL> SHOW DATABASES;
db1

Flink SQL> USE db1;

Flink SQL> USE MODULES hive;
[INFO] Use modules succeeded!
Flink SQL> SHOW FULL MODULES;
+-------------+-------+
| module name |  used |
+-------------+-------+
|        hive |  true |
|        core | false |
+-------------+-------+
2 rows in set

USE CATALOG

USE CATALOG catalog_name

현재 카탈로그를 설정해요. 카탈로그를 명시적으로 지정하지 않는 이후의 모든 명령은 이 카탈로그를 사용해요. 제공된 카탈로그가 존재하지 않으면 예외가 던져져요. 기본 현재 카탈로그는 default_catalog예요.

USE MODULES

USE MODULES module_name1[, module_name2, ...]

선언된 순서로 활성화된 모듈을 설정해요. 이후의 모든 명령은 활성화된 모듈 내에서 메타데이터(함수/사용자 정의 타입/규칙 등)를 해석하며 해석 순서를 따르게 돼요. 모듈은 로드될 때 기본적으로 사용돼요. USE MODULES 문으로 사용되지 않는 로드된 모듈은 비활성화돼요. 기본으로 로드되고 활성화된 모듈은 core예요.

USE

USE [catalog_name.]database_name

현재 데이터베이스를 설정해요. 데이터베이스를 명시적으로 지정하지 않는 이후의 모든 명령은 이 데이터베이스를 사용해요. 제공된 데이터베이스가 존재하지 않으면 예외가 던져져요. 기본 현재 데이터베이스는 default_database예요.

더 알아보기 (Learn more)