728x90
반응형
RDBMS처럼 사용하여 테이블을 만들고, 데이터를 저장하고 관리하는 방법입니다. DuckDB는 내장형이지만 SQL을
사용해서 테이블 생성, INSERT, SELECT 등 대부분의 관계형 DB 작업이 가능합니다.
1. DuckDB에 테이블 생성하고 데이터 삽입하기
import duckdb
# DuckDB 연결 (메모리 상에서 작동하거나, 파일 저장 가능)
con = duckdb.connect("myduckdb.db") # 'myduckdb.db' 파일 생성됨
# 1. 테이블 생성 (SQL 문법 그대로 사용)
con.execute("""
CREATE TABLE users (
id INTEGER,
name TEXT,
age INTEGER
);
""")
# 2. 데이터 삽입
con.execute("""
INSERT INTO users VALUES
(1, 'Alice', 30),
(2, 'Bob', 25),
(3, 'John', 28),
(4, 'Charlie', 40);
""")
# 3. 데이터 조회
result = con.execute("SELECT * FROM users").fetchdf()
result
2. Pandas Dataframe을 DuckDB 테이블로 저장
import pandas as pd
df = pd.DataFrame({
'product': ['apple', 'banana', 'carrot'],
'price': [1000, 800, 1200]
})
# DuckDB 연결
con = duckdb.connect("myduckdb.db")
# 1. DuckDB에 테이블로 등록
con.execute("CREATE TABLE IF NOT EXISTS products AS SELECT * FROM df")
# 2. 조회 확인
print(con.execute("SELECT * FROM products").fetchdf())
출력
product price
0 apple 1000
1 banana 800
2 carrot 1200
※ Pandas의 DataFrame을 SQL 테이블처럼 즉시 등록해서 쿼리할 수 있습니다.
3. CSV 파일 불러와 테이블로 저장
# CSV 파일을 DuckDB 테이블로 불러오기 기존의 iris.csv 파일 생성한 코드 실행 후 수행
con.execute("""
CREATE TABLE IF NOT EXISTS iris AS
SELECT * FROM read_csv_auto('iris.csv')
""")
# 확인
con.execute("SELECT COUNT(*) as cnt FROM iris").fetchdf()
4.연결 종료
con.close()
5.트랜잭션 관리
con.execute("""
BEGIN TRANSACTION;
INSERT INTO users VALUES (4, 'David', 50);
DELETE FROM users WHERE id = 2;
COMMIT;
""")
6.UPDATE/DELETE
import duckdb
con = duckdb.connect("users.db")
# 사용자 테이블 생성
con.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER,
name TEXT,
age INTEGER
);
""")
# 초기 데이터 삽입
con.execute("""
INSERT INTO users VALUES
(1, 'Alice', 30),
(2, 'Bob', 25),
(3, 'Charlie', 40);
""")
# UPDATE: Bob 나이를 35로 변경
con.execute("""
UPDATE users SET age = 35 WHERE name = 'Bob';
""")
# DELETE: 나이가 30 이하인 사람 삭제
con.execute("""
DELETE FROM users WHERE age <= 30;
""")
# 결과 확인
df = con.execute("SELECT * FROM users").fetchdf()
print(df)
# 연결 종료
con.close()
출력
id name age
0 2 Bob 35
1 3 Charlie 40
다음 세번째로는 parquet 사용 및 copy로 output 파일 생성하는 내용에 대해서 정리하도록 하겠습니다.
728x90
반응형
'데이터분석' 카테고리의 다른 글
Colab 한글폰트 문제 해결 (0) | 2025.04.10 |
---|---|
DuckDB-3 (Parquet 및 Copy) (0) | 2025.04.10 |
DuckDB-1 (파일SQL) (0) | 2025.04.08 |
pandas 컬럼명 변경 (0) | 2025.04.08 |
비모수검정 (0) | 2025.04.08 |