PostgreSQL 가져오기

PostgreSQL 가져오기 (PostgreSQL Import)

실행 중인 PostgreSQL 데이터베이스에 직접 쿼리를 날리고 싶다면, postgres 확장(extension)이 필요해요. 이 페이지에서 설치부터 postgres_scan 함수, 그리고 ATTACH로 전체 DB를 붙이는 방법까지 살펴볼게요.

출처: DuckDB 공식 문서 — postgres

설치와 로딩 (Installation and Loading)

확장은 INSTALL SQL 명령으로 설치할 수 있어요. 이 명령은 한 번만 실행하면 됩니다.

INSTALL postgres;

설치한 postgres 확장을 실제로 사용하려면 LOAD SQL 명령으로 불러와요.

LOAD postgres;

사용법 (Usage)

postgres 확장을 설치한 뒤에는 postgres_scan 함수로 PostgreSQL의 테이블을 조회할 수 있어요.

-- 데이터베이스 "mydb"의 스키마 "public"에 있는 테이블 "mytable"을 스캔
SELECT * FROM postgres_scan('host=localhost port=5432 dbname=mydb', 'public', 'mytable');

postgres_scan 함수의 첫 번째 매개변수는 PostgreSQL 연결 문자열(connection string)이에요. 즉 {key}={value} 형식으로 연결 인자들을 나열하는 방식이죠. 아래는 사용할 수 있는 유효한 인자 목록이에요.

이름 (Name) 설명 (Description) 기본값 (Default)
host 연결할 호스트 이름 localhost
hostaddr 호스트 IP 주소 localhost
port 포트 번호 5432
user PostgreSQL 사용자 이름 [OS 사용자 이름]
password PostgreSQL 비밀번호
dbname 데이터베이스 이름 [user]
passfile 비밀번호가 저장된 파일 이름 ~/.pgpass

또는 ATTACH 명령으로 데이터베이스 전체를 연결(attach)할 수도 있어요. 이렇게 하면 PostgreSQL 데이터베이스 안에 있는 모든 테이블을 마치 일반 데이터베이스처럼 조회할 수 있습니다.

-- 주어진 연결 문자열로 PostgreSQL 데이터베이스 attach
ATTACH 'host=localhost port=5432 dbname=mydb' AS test (TYPE postgres);

-- "tbl_name" 테이블을 이제 일반 테이블처럼 조회 가능
SELECT * FROM test.tbl_name;

-- 활성 데이터베이스를 "test"로 전환
USE test;

-- 파일에 있는 모든 테이블 나열
SHOW TABLES;

더 자세한 내용은 PostgreSQL 확장 문서를 참고하세요.

더 알아보기 (Learn more)