> 데이터 베이스 > MySQL 튜토리얼 > LOAD DATA INFILE을 사용하여 빈 필드가 있는 CSV 데이터를 MySQL로 가져올 때 0 대신 NULL 값을 어떻게 처리할 수 있습니까?

LOAD DATA INFILE을 사용하여 빈 필드가 있는 CSV 데이터를 MySQL로 가져올 때 0 대신 NULL 값을 어떻게 처리할 수 있습니까?

Susan Sarandon
풀어 주다: 2025-01-04 14:02:39
원래의
177명이 탐색했습니다.

How Can I Handle NULL Values Instead of Zeros When Importing CSV Data with Empty Fields into MySQL Using LOAD DATA INFILE?

빈 필드가 있는 CSV의 MySQL LOAD에서 NULL 값 처리

MySQL의 LOAD 명령은 CSV 파일의 데이터를 테이블로 가져오는 간단한 방법을 제공합니다. 그러나 빈 필드가 포함된 CSV 파일에서 숫자 데이터를 로드할 때 MySQL은 열이 Null 허용으로 정의된 경우에도 NULL 대신 0을 삽입하는 경향이 있습니다.

다음 CSV 파일(testdata.txt)을 고려하세요.

1,2,3,4,5
1,2,3,,5
1,2,3
로그인 후 복사

그리고 다음 MySQL 테이블(moo):

CREATE TABLE moo (
  one INT(1) NULL,
  two INT(1) NULL,
  three INT(1) NULL,
  four INT(1) NULL,
  five INT(1) NULL
);
로그인 후 복사

CSV 데이터를 moo에 로드할 때 LOAD 명령을 사용하여 테이블:

LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS TERMINATED BY "," LINES TERMINATED BY "\n";
로그인 후 복사

결과 테이블에는 다음이 포함됩니다.

+------+------+-------+------+------+
| one  | two  | three | four | five |
+------+------+-------+------+------+
| 1    | 2    | 3     | 4    | 5    |
| 1    | 2    | 3     | 0    | 5    |
| 1    | 2    | 3     | NULL | NULL |
+------+------+-------+------+------+
로그인 후 복사

관찰할 수 있듯이 MySQL은 빈 필드에 0을 할당합니다. 이는 열이 NULL 값을 허용하는 경우 올바르지 않습니다. .

이 문제를 해결하고 빈 필드가 NULL로 올바르게 처리되도록 하려면 NULLIF() 함수를 활용하세요. NULLIF()는 확인할 필드와 필드가 비어 있는 경우 반환할 값이라는 두 가지 인수를 사용합니다. 사용 방법은 다음과 같습니다.

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(one, two, three, @vfour, five)
SET four = NULLIF(@vfour,'')
;
로그인 후 복사

이 예에서는 네 번째 필드를 지역 변수 @vfour로 읽어옵니다. 그런 다음 @vfour가 빈 문자열인 경우 SET 문은 4를 NULL에 할당합니다.

여러 필드가 비어 있을 수 있는 경우 해당 필드를 모두 로컬 변수로 읽고 여러 SET 문을 활용하세요.

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(@vone, @vtwo, @vthree, @vfour, @vfive)
SET
one = NULLIF(@vone,''),
two = NULLIF(@vtwo,''),
three = NULLIF(@vthree,''),
four = NULLIF(@vfour,'')
;
로그인 후 복사

NULLIF()를 활용하면 이제 MySQL LOAD가 빈 필드를 올바르게 처리하고 NULL 값을 할당할 수 있으므로 MySQL 테이블의 데이터로 정확하게 작업할 수 있습니다.

위 내용은 LOAD DATA INFILE을 사용하여 빈 필드가 있는 CSV 데이터를 MySQL로 가져올 때 0 대신 NULL 값을 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿