58 lines
1.8 KiB
SQL
58 lines
1.8 KiB
SQL
-- PostgreSQL 데이터베이스 및 테이블 생성 스크립트
|
|
-- 작성일: 2024년
|
|
-- 목적: researchqa 프로젝트용 데이터베이스 설정
|
|
|
|
-- 1. woonglab 사용자 생성 (이미 존재할 경우 무시)
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'woonglab') THEN
|
|
CREATE USER woonglab WITH PASSWORD '!@#woonglab';
|
|
END IF;
|
|
END
|
|
$$;
|
|
|
|
-- 2. researchqa 데이터베이스 생성 (이미 존재할 경우 무시)
|
|
SELECT 'CREATE DATABASE researchqa OWNER woonglab'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'researchqa')\gexec
|
|
|
|
-- 3. researchqa 데이터베이스에 대한 권한 부여
|
|
GRANT ALL PRIVILEGES ON DATABASE researchqa TO woonglab;
|
|
|
|
-- 4. researchqa 데이터베이스에 연결하여 테이블 생성
|
|
\c researchqa;
|
|
|
|
-- 5. files 테이블 생성 (main.py와 일치)
|
|
CREATE TABLE uploaded_file (
|
|
id SERIAL PRIMARY KEY,
|
|
filename VARCHAR(255) NOT NULL,
|
|
file_path VARCHAR(500) NOT NULL,
|
|
status VARCHAR(10) NOT NULL,
|
|
upload_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 6. user_log 테이블 생성
|
|
CREATE TABLE IF NOT EXISTS user_log (
|
|
id SERIAL PRIMARY KEY,
|
|
question TEXT NOT NULL,
|
|
answer TEXT NOT NULL,
|
|
like_count INTEGER DEFAULT 0,
|
|
dislike_count INTEGER DEFAULT 0,
|
|
ip VARCHAR(45),
|
|
reg_dt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 7. woonglab 사용자에게 테이블 권한 부여
|
|
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO woonglab;
|
|
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO woonglab;
|
|
|
|
-- 8. 생성된 테이블 확인
|
|
\dt
|
|
|
|
-- 9. 테이블 구조 확인
|
|
\d files
|
|
\d user_log
|
|
|
|
-- 스크립트 실행 완료 메시지
|
|
SELECT 'Database setup completed successfully!' as message;
|