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);

 



🙌 댓글, 공감, 공유는 큰 힘이 됩니다! 😄

+ Recent posts