FUNCTION을 이용하여 테이블 구조를 파악하고 샘플데이터 자동으로 삽입
📝 테이블 자동 분석하여 샘플데이터 넣는 함수생성
CREATE OR REPLACE FUNCTION generate_sample_data(p_table text, p_count int)
RETURNS void AS $$
DECLARE
col_rec record;
col_list text;
val_list text;
sql text;
i int;
BEGIN
-- Step 1: 컬럼 리스트 확인
SELECT string_agg(quote_ident(column_name), ', ')
INTO col_list
FROM information_schema.columns
WHERE table_name = p_table
AND table_schema = 'public';
IF col_list IS NULL THEN
RAISE EXCEPTION '테이블 "%"의 컬럼 정보를 찾을 수 없습니다.', p_table;
END IF;
-- Step 2: 반복 삽입
FOR i IN 1..p_count LOOP
val_list := (
SELECT string_agg(
CASE
WHEN data_type LIKE '%int%' THEN (trunc(random()*100))::text
WHEN data_type LIKE '%char%' OR data_type = 'text' THEN
quote_literal(
substr(
md5(random()::text),
1,
COALESCE(character_maximum_length, 10)
)
)
WHEN data_type = 'date' THEN
quote_literal(current_date - (random()*365)::int)
WHEN data_type = 'timestamp without time zone' THEN
quote_literal(now() - (random()*1000000)::int * interval '1 second')
ELSE 'NULL'
END, ', '
)
FROM information_schema.columns
WHERE table_name = p_table
AND table_schema = 'public'
);
sql := format('INSERT INTO public.%I (%s) VALUES (%s);', p_table, col_list, val_list);
EXECUTE sql;
END LOOP;
END;
$$ LANGUAGE plpgsql;
💻 샘플데이터 넣기
SELECT generate_sample_data('<테이블명>', 10);
🙌 댓글, 공감, 공유는 큰 힘이 됩니다! 😄
'RDBMS > PostgreSQL, EDB' 카테고리의 다른 글
[PostgreSQL] Search Path 쉽게 이해하고 실습해보기 (0) | 2025.06.04 |
---|---|
[PostgreSQL] Dictionary View 리스트 (1) | 2025.06.04 |
[PostgreSQL] Citus 기반 Sharding(샤딩) 구축해보기 (0) | 2025.05.30 |
[PostgreSQL] Dictionary View 리스트 (0) | 2025.05.27 |
[PostgreSQL] 테이블 별 DML 인입 건수 조회 (0) | 2025.05.19 |