상상해봐, 누가 너한테 학생 정보가 담긴 CSV 파일을 보냈어. 예를 들어, 다른 데이터베이스나 외부 앱에서 받은 거지. 그걸 한 줄씩 복사해서 넣으라고? 에이, 그건 좀 아니지. 이럴 때 바로 대량 데이터 업로드가 필요해지는 거야.
대량 데이터 업로드가 너를 구해주는 몇 가지 상황이 있어:
- 데이터 마이그레이션: 한 시스템에서 다른 시스템으로 데이터를 옮겨야 할 때. 예를 들어, Excel이나 다른 데이터베이스에서 PostgreSQL로 옮기는 경우.
- 데이터베이스 초기화: 데이터베이스에 처음 데이터를 채워넣을 때, 예를 들어 도시 목록, 강의 목록, 상품 카테고리 같은 거.
- 외부 시스템과 통합: 새로운 데이터를 정기적으로 추가해야 할 때, 예를 들어 외부에서 파일로 받은 데이터를 업데이트하는 경우.
- 대량 데이터 업데이트: 오래된 데이터를 최신 데이터로 한 번에 바꿔야 할 때.
여기까지 괜찮지? 오케이, 그럼 계속 가보자!
대량 데이터 업로드의 기본 접근법
본격적으로 들어가기 전에, 한두 줄이 아니라 여러 줄을 한 번에 데이터베이스에 넣는 방법이 뭐가 있는지 짧게 얘기해볼게. SQL 쿼리로 하는 방법부터, 더 편하고 요즘 많이 쓰는 파일 업로드 방식까지 알아보자.
데이터 삽입을 위한 SQL 쿼리
이미 알겠지만, 데이터를 추가할 때는 INSERT INTO 명령을 써. 이건 데이터가 몇 개 없을 때는 딱 좋아. 예를 들어:
INSERT INTO students (id, name, age, course)
VALUES (1, 'Otto Lin', 20, '프로그래밍');
근데 만약 수십, 수백, 수천 줄을 넣어야 한다면? 이 방법은 비효율적이야. 물론 코드로 자동화할 수도 있지만, 수동으로 관리하기엔 너무 힘들고 귀찮아.
파일에서 업로드하기
그래서 보통은 CSV(Comma-Separated Values) 같은 파일에서 데이터를 업로드하는 걸 많이 써. 이건 그냥 텍스트 파일인데, 각 줄이 하나의 레코드고, 값들은 쉼표나 세미콜론으로 구분돼.
CSV 파일 예시:
id,name,age,course
1,Otto Lin,20,프로그래밍
2,Maria Chi,21,디자인
3,Alex Ming,19,수학
이런 포맷은 사람도 읽기 쉽고, 프로그램도 다루기 쉬워. CSV는 Excel로 열 수도 있고, Python이나 다른 언어로 처리할 수도 있어. 그리고 데이터베이스에 쉽게 임포트할 수 있지. 파일에서 대량으로 업로드하면 수동으로 넣는 것보다 훨씬 빠르고, 입력 실수도 줄일 수 있어.
대량 업로드 준비하기
성공적인 업로드의 비결은 준비에 있어. 데이터베이스를 데이터 받을 준비를 하고, 구조가 맞는지, 데이터가 제대로 되어 있는지 확인해야 해.
테이블 구조 확인
먼저, 네 데이터베이스에 파일 구조와 맞는 테이블이 있는지 확인해. 예를 들어 학생 데이터를 업로드한다면, 그에 맞는 컬럼이 있는 테이블이 있어야 해.
학생 데이터 업로드용 테이블 예시:
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL,
course TEXT
);
중요한 포인트:
- 컬럼의 데이터 타입이 파일의 데이터와 맞는지 꼭 확인해.
age가 숫자라면, CSV에서도 해당 컬럼에 숫자만 있어야 해. - 제약조건(
NOT NULL,UNIQUE등)이 있는 컬럼은 데이터 준비를 더 신경 써야 해.
데이터 확인
이제 데이터에 대해 간단히 체크해보자. 업로드 전에 꼭 확인해야 할 것들:
- 빈 줄이나 잘못된 값이 없는지 확인. 예를 들어,
12,,20,프로그래밍이런 줄은 에러가 나. 왜냐면name은 필수 컬럼이거든.
구분자가 맞는지 확인. CSV에서 쉼표(
,)를 쓴다면, 그게 제대로 설정되어 있는지 봐야 해. 만약 쉼표 대신 세미콜론(;)을 쓴다면, 업로드할 때 그걸 지정해줘야 해.인코딩. PostgreSQL은 파일이 UTF-8이어야 해. 만약 네 파일이 다른 인코딩(예: Windows-1251)이라면 변환해줘야 해.
프로그래머를 위한 소소한 농담
왜 프로그래머들은 CSV를 좋아할까? JSON이랑 몇 시간 씨름하다가 드디어 "단순한" 데이터를 만나서지... 물론, 텍스트 안에 쉼표가 나오기 전까진 말이야.
대량 업로드의 실전 활용
실제 프로젝트에서 대량 업로드는 진짜 자주 써. 예를 들어:
- 온라인 쇼핑몰 상품 목록을 업데이트할 때. 수천 개 상품이 담긴 CSV 파일도 몇 초면 업로드 가능해.
- 한 CRM 시스템에서 다른 CRM으로 고객을 마이그레이션할 때. 고객 정보, 주소, 주문 내역을 CSV로 PostgreSQL에 넣는 거지.
- 분석할 때, 한 달치 판매 데이터를 업로드해서 분석하는 경우.
이제 왜 대량 업로드가 필요한지, 어떻게 준비해야 하는지 알았으니까, 다음엔 COPY 명령 같은 실제 데이터 업로드 도구를 배워보자. 이건 다음 강의에서 다룰게!
GO TO FULL VERSION