강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của csd88500353
csd88500353

câu hỏi đã được viết

Phân tích dữ liệu SQL ứng dụng thực tế: Xử lý dữ liệu hiệu quả và Đưa ra insight

12_2. Dự án 1: Giới thiệu OpenAirbnb

12-2 listing 로드 문제

Viết

·

77

0

load할 때 id에 중복값이 있어서 고유키 설정인 안되는데 어떻게 해결하나요

sqlmysqldbms/rdbms

Câu trả lời 2

0

DataScienceOne님의 프로필 이미지
DataScienceOne
Người chia sẻ kiến thức

안녕하세요 질문 감사드립니다.

옵션1. 중복되는 레코드를 드랍하기

옵션2. 테이블 설정에서 고유 id 중복 허용

 

1. 중복 레코드 삭제 (DROP)

중복된 데이터를 제거한 후 로드하는 방법입니다.

① 중복된 레코드 삭제 (DELETE + ROW_NUMBER())

MySQL 8.0 이상에서는 ROW_NUMBER()를 활용하여 중복된 행을 삭제할 수 있습니다.

WITH cte AS ( SELECT id, ROW_NUMBER() OVER (PARTITION BY duplicate_column ORDER BY id) AS row_num FROM table_name ) DELETE FROM table_name WHERE id IN (SELECT id FROM cte WHERE row_num > 1);

  • duplicate_column 기준으로 중복을 그룹화

  • ROW_NUMBER()를 사용하여 첫 번째 행을 제외한 중복 행 삭제

 

2. 테이블 설정 변경 (중복 허용)

중복을 허용하려면 기본 키 또는 제약 조건을 변경해야 합니다.

① 기본 키 제거 (PK 제거 후 중복 허용)

ALTER TABLE table_name DROP PRIMARY KEY;

주의: 기본 키를 제거하면 데이터 무결성 문제가 발생할 수 있음

INSERT IGNORE 사용 (중복된 데이터 무시)

INSERT IGNORE INTO table_name (id, column1, column2) VALUES (1, 'data1', 'data2');

  • 중복된 id 값이 있으면 해당 행을 무시하고 에러 없이 계속 실행

ON DUPLICATE KEY UPDATE 사용 (중복 시 업데이트)

INSERT INTO table_name (id, column1, column2) VALUES (1, 'data1', 'data2') ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2);

  • 중복된 id 값이 있으면 기존 데이터를 업데이트

0

안녕하세요, 인프런 AI 인턴입니다. csd8850님.

SQL 데이터 로딩 중 중복된 기본 키 문제는 데이터베이스 관리에 있어 흔히 발생할 수 있는 이슈입니다. 데이터베이스에 데이터를 로드할 때 id 필드에 중복 값이 있어서 고유 키 제약 조건을 설정할 수 없을 때, 몇 가지 해결 방안을 제안드립니다:

  1. 초기 데이터 클리닝: 데이터 로딩 전에, 중복된 id를 제거하거나 통합하여 고유한 값을 가지도록 데이터셋을 정리합니다. 이는 데이터 품질을 높이는 데 중점을 둔 방법입니다.

  2. 고유한 식별자 생성: 데이터에 고유한 식별자를 생성하여 추가하는 방법입니다. 예를 들어, 기존 id를 수용하지 못하는 경우, 새로운 열을 생성하여 UUID 또는 다른 고유 식별자로 채워 넣을 수 있습니다.

  3. Conflict Handling: PostgreSQL 등의 데이터베이스에서는 INSERT ON CONFLICT 문을 사용하거나, MySQL에서는 INSERT IGNORE와 같이 중복된 항목을 무시하도록 설정할 수 있습니다.

관련된 기존 질문 답변을 참고하시면, 보다 구체적인 해결 방법과 쿼리를 작성하는데 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của csd88500353
csd88500353

câu hỏi đã được viết

Đặt câu hỏi