MySQL - CSV 파일을 데이터베이스에 가져오기

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 MySQL의 세계로 여행을 떠나 CSV 파일을 데이터베이스에 어떻게 가져오는지 배우겠습니다. 초보자라고 걱정하지 마세요; 저는 여러 해 동안 교실에서 사용한 같은 인내로 단계별로 안내해 드리겠습니다. 시작해 보겠습니다!

MySQL - Import CSV File into Database

CSV 파일이란?

가져오기 전에 먼저 우리가 다루게 될 것에 대해 이해해 보겠습니다. CSV는 쉼표로 구분된 값(Comma-Separated Values)을 의미합니다. 이는 간단한 스프레드시트를 텍스트 파일로 저장한 것과 같으며, 각 줄이 행이 되고 각 행의 값이 쉼표로 구분됩니다. 이를 체계적으로 정리된 정보 목록으로 생각하면 됩니다. 다양한 프로그램 간 데이터 이전에 완벽하게 적합합니다.

MySQL CSV를 데이터베이스에 가져오기

이제 재미있는 부분으로 넘어가겠습니다 - CSV 파일을 MySQL에 가져오는 방법입니다. 여러 가지 방법이 있지만, 두 가지 주요 방법에 집중하겠습니다: MySQL 명령어 사용과 MySQL 클라이언트 프로그램 사용.

방법 1: MySQL 명령어 사용

이 방법은 MySQL에서 직접 SQL 명령어를 사용하는 것입니다. 마치 MySQL의 자연어로 지시를 주는 것과 같습니다. 단계별로 설명하겠습니다:

  1. 먼저, 우리는 CSV 파일의 데이터를 저장할 데이터베이스 테이블을 생성해야 합니다. 다음은 예시입니다:
CREATE TABLE employees (
id INT,
name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10, 2)
);

이는 'employees'라는 테이블을 생성하며, id, name, department, salary 열을 포함합니다. CSV 파일의 구조에 따라 조정하십시오.

  1. 이제 LOAD DATA INFILE 명령어를 사용하여 CSV를 가져오겠습니다:
LOAD DATA INFILE '/path/to/your/file.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

이를 해부해 보면:

  • /path/to/your/file.csv: 실제 CSV 파일의 경로로 변경하십시오.
  • INTO TABLE employees: 가져오는 테이블을 지정합니다.
  • FIELDS TERMINATED BY ',': 필드가 쉼표로 구분된다고 MySQL에 알립니다.
  • ENCLOSED BY '"': 필드가 따옴표로 둘러싸여 있다면 이를 알립니다.
  • LINES TERMINATED BY '\n': 각 줄이 새로운 행을 의미한다고 지정합니다.
  • IGNORE 1 ROWS: CSV에 헤더 행이 있다면 이를 건너뜁니다.

방법 2: MySQL 클라이언트 프로그램 사용

시각적인 접근을 좋아하신다면, MySQL 클라이언트 프로그램을 사용할 수 있습니다. 마치 MySQL과 친절한 인터페이스를 통해 소통하는 것과 같습니다.

  1. MySQL 클라이언트 프로그램(예: MySQL Workbench)을 엽니다.
  2. 데이터베이스에 연결합니다.
  3. "Table Data Import Wizard"나 "Import"와 같은 옵션을 찾습니다.
  4. 프롬프트에 CSV 파일을 선택합니다.
  5. 마법사의 단계를 따라 CSV 열을 테이블 열과 매핑합니다.
  6. 'Import'나 'Finish'를 클릭하여 과정을 완료합니다.

최선의 관행과 팁

이제 기본적인 내용을 다루었으므로, 여러 해 동안 가르치며 얻은 지혜를 공유하겠습니다:

  1. 항상 가져오기 전에 데이터베이스를 백업합니다. 보스 전투 전에 게임을 저장하는 것과 같아요 - 항상 좋은 방법입니다!

  2. CSV 파일의 오류를 확인합니다. 잘못된 쉼표 하나로 전체 가져오기가 망가질 수 있습니다. 정말로 학생들이 몇 시간 동안 디버깅한 후 이유가 한 쉼표였다는 일이 있었어요!

  3. 먼저 테스트 데이터베이스를 사용합니다. 옷을 사기 전에 입어보는 것과 같아요 - 주요 데이터베이스에 커밋하기 전에 모든 것이 잘 맞는지 확인하세요.

  4. 데이터 타입에 주의합니다. CSV에 날짜가 포함되어 있다면 MySQL의 날짜 형식과 일치하는지 확인하세요. 퍼즐 조각이 맞지 않으면 강제로 끼워넣지 마세요.

  5. NULL 값을 적절히 처리합니다. CSV의 공백 필드가 문제를 일으킬 수 있습니다. NULL로 처리할지 공백 문자열로 처리할지 결정하세요.

일반 문제 해결

최선의 준비를 했음에도 불구하고, 가끔은 문제가 발생할 수 있습니다. 다음은 일반적인 문제와 해결 방법입니다:

  1. "The MySQL server is running with the --secure-file-priv option": MySQL이 파일을 읽을 수 있는 권한이 없음을 의미합니다. 해결 방법:
  • secure_file_priv 설정을 확인합니다: SHOW VARIABLES LIKE "secure_file_priv";
  • CSV 파일을 지정된 디렉토리로 이동하거나 MySQL 설정을 조정합니다.
  1. 데이터가 잘못된 열에 나타납니다: FIELDS TERMINATED BYENCLOSED BY 설정을 다시 확인하세요. 잘못된 따옴표 하나가 모든 것을 혼란에 빠뜨릴 수 있습니다.

  2. import가 느리다: 큰 파일의 경우, 파일을 작은 조각으로 나누어 가져오세요. 큰 피자를 먹는 것처럼, 한 조각씩 먹는 것이 훨씬 쉬워요!

결론

축하합니다! 지금까지 CSV 파일을 MySQL에 가져오는 방법을 배웠습니다. 연습이 완벽을 만듭니다. 처음에는 완벽하게 작동하지 않을 수 있지만, 경험 많은 개발자들도 종종 가져오기에 어려움을 겪습니다.

여기서 다루었던 방법의 빠른 참조 표입니다:

방법 장점 단점
MySQL 명령어 직접 제어, 스크립팅 가능 SQL 지식 필요
클라이언트 프로그램 사용자 친화적, 시각적 복잡한 가져오기에 유연성 부족

계속 탐구하고, 배우고, 데이터베이스와의 즐거움을 느껴보세요! 누구라도 이 내용을 가르칠 수 있을지도 모릅니다!

Credits: Image by storyset