본문 바로가기
WIKI 기술 지식 베이스

CREATE VIRTUAL TABLE

원문 보기 위키 갱신

CREATE VIRTUAL TABLE은 데이터베이스 파일에 저장되는 대신 모듈이 즉석에서 내용을 계산해주는 테이블을 만들어요.

출처: 문서

본문

CREATE VIRTUAL TABLE 문은 내용을 데이터베이스 파일에 저장하는 게 아니라 모듈이 즉석에서 계산하는 테이블을 만들어요. 가상 테이블은 외부 데이터 소스, 커스텀 생성기, 테이블 값 함수 위에 SQL 인터페이스를 제공해요.

문법

CREATE VIRTUAL TABLE [IF NOT EXISTS] [schema-name.]table-name
    USING module-name [(module-arguments)];

설명

가상 테이블은 행의 저장과 조회를 모듈에 위임해요. 모듈이 테이블의 컬럼, 반환할 데이터, 그 테이블에 대한 쿼리를 어떻게 최적화할지 결정해요. 가상 테이블은 일반 테이블처럼 SELECT로 조회할 수 있지만, 모듈이 쓰기 지원을 구현하지 않았다면 INSERT, UPDATE, DELETE의 대상이 될 수 없어요.

절

절 설명
IF NOT EXISTS 같은 이름의 테이블이 이미 존재할 때 생길 오류를 억제해요.
schema-name 가상 테이블을 만들 붙은(attached) 데이터베이스 이름. 기본값은 main.
table-name 새 가상 테이블의 이름.
module-name 가상 테이블 구현을 제공하는 모듈의 이름.
module-arguments 모듈에 전달되는 쉼표로 구분된 인수. 이 인수들의 형식과 의미는 모듈마다 달라요.

사용 가능한 모듈

csv

csv 모듈은 CSV 파일에서 데이터를 읽어서 그 내용을 읽기 전용 테이블로 노출해요. 먼저 load_extension('csv')로 csv 확장을 로드하세요.

인수 설명
filename 읽을 CSV 파일 경로.
header 첫 행에 컬럼 이름이 들어 있으면 yes. 기본값은 no.
columns header가 no일 때 기대할 컬럼 개수.
schema 컬럼 이름과 타입을 위한 명시적 CREATE TABLE 스키마.

generate_series

generate_series 모듈은 정수 값의 계열을 만들어 내는 내장 테이블 값 함수예요. 확장을 로드할 필요가 없어요.

인수 설명
start 계열의 첫 값 (포함).
stop 계열의 마지막 값 (포함).
step 값 사이의 증분. 기본값은 1.

generate_series 모듈은 가상 테이블로도, FROM 절의 테이블 값 함수로도 쓸 수 있어요.

예제

CSV 파일 읽기

-- Load the csv extension
SELECT load_extension('csv');

-- Create a virtual table from a CSV file with a header row
CREATE VIRTUAL TABLE employees USING csv(
    filename='employees.csv',
    header=yes
);

-- Query the CSV data with SQL
SELECT * FROM employees WHERE department = 'Engineering';

정수 계열 만들기

-- Use generate_series as a table-valued function
SELECT value FROM generate_series(1, 10);
-- value
-- 1
-- 2
-- ...
-- 10

-- Use with a step argument
SELECT value FROM generate_series(0, 100, 10);
-- value
-- 0
-- 10
-- 20
-- ...
-- 100

generate_series로 날짜 계열 만들기

-- Generate dates for the next 7 days
SELECT date('now', '+' || value || ' days') AS day
FROM generate_series(0, 6);

더 알아보기 (Learn more)

  • SELECT - 가상 테이블 조회하기
  • 호환성 - 지원되는 모듈 전체 목록