[SQL] 중복 데이터를 제외하고 입력하기

yoonene·2023년 7월 26일

이미 데이터베이스에 존재하는 데이터를 중복해서 입력하지 않으려면 아래와 같이 "WHERE NOT EXISTS"를 사용하면 된다.

SQL문

INSERT INTO {table_name} (col1, col2, col3)
SELECT val1, val2, val3
WHERE NOT EXISTS (
	SELECT col1
    FROM {table_name}
    WHERE col1 = val1
                )

col1의 값이 중복되지 않는 데이터에 대해서만 insert 하겠다는 SQL문 예시이다.

Python에서 입력

psycopg2를 사용해서 python에서 입력하는 경우, 다음과 같이 처리할 수 있다.

cursor = connection.cursor()

sql1 = f'''
INSERT INTO {table_name} (col1, col2, col3)
SELECT %s, %s, %s
WHERE NOT EXISTS (
	SELECT col1
    FROM {table_name}
    WHERE col1 = %s
                )
            '''
record_to_insert = (val1, val2, val3, val1)

cursor.execute(sql1, record_to_insert)
profile
NLP Researcher / Information Retrieval / Search

0개의 댓글