3.3.3 Loading Data into a Table
테이블을 만든 후 데이터를 이입해야합니다. 여기에는 LOAD DATA
문 및 INSERT
문이 도움이됩니다.
애완 동물의 레코드를 다음과 같이 설명 할 수 있다고 가정합니다. (MySQL은 날짜 형식은 'YYYY-MM-DD'
로 상정되고 있습니다. 이것은 사용자가 일반적으로 사용하는 형식과 다를 수 있습니다.)
name | owner | species | sex | birth | death |
---|---|---|---|---|---|
Fluffy | Harold | cat | f | 1993-02-04 | |
Claws | Gwen | cat | m | 1994-03-17 | |
Buffy | Harold | dog | f | 1989-05-13 | |
Fang | Benny | dog | m | 1990-08-27 | |
Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
Chirpy | Gwen | bird | f | 1998-09-11 | |
Whistler | Gwen | bird | 1997-12-09 | ||
Slim | Benny | snake | m | 1996-04-29 |
빈 테이블에서 시작하기 때문에 데이터를 채우는 간단한 방법은 각 동물에 해당하는 행을 기술 한 텍스트 파일을 만들고 하나의 문에서 그 파일의 내용을 테이블에로드하는 것입니다.
예를 들어, 텍스트 파일 pet.txt
를 만들고 행당 레코드를 작성합니다. 값은 CREATE TABLE
문에 지정된 컬럼의 순서에 따라 탭으로 구분합니다. 성별을 모르거나 아직 살아있는 애완 동물의 사망 일자 등 부족한 값은 NULL
값을 사용할 수 있습니다. 텍스트 파일에서 이러한 표현하려면 \N
(backslash와 대문자 N)을 사용합니다. 예를 들어, Whistler라는 새 레코드는 다음과 같습니다 (값 사이의 공백은 하나의 탭 문자입니다).
Whistler Gwen bird \ N 1997-12-09 \ N
텍스트 파일 pet.txt
를 pet
테이블에로드하려면 다음 문을 사용합니다.
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
이 파일을 Windows에서 만든 경우 생성에 사용되는 에디터 \r\n
이 행 종결 자로 사용되는 경우에는 대신 다음 문을 사용합니다.
mysql>LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
->LINES TERMINATED BY '\r\n';
(OS X를 실행하는 Apple 컴퓨터는 LINES TERMINATED BY '\r'
을 사용하면 좋을 것입니다.)
컬럼 값 구분자과 끝 마커는 필요에 따라 LOAD DATA
문에서 명시 적으로 지정할 수 있지만 기본적으로 탭과 개행입니다. 문 pet.txt
파일을 제대로 읽으려면 이것으로 충분합니다.
문이 실패 할 경우 사용하는 MySQL 설치는 로컬 파일 기능이 기본적으로 활성화되어 있지 않을 가능성이 있습니다. 이를 변경하는 방법은 섹션 6.1.6 "LOAD DATA LOCAL의 보안 문제" 를 참조하십시오.
새 레코드를 하나씩 추가하려면 INSERT
문이 도움이됩니다. 가장 간단한 형식은 CREATE TABLE
문에 지정한 컬럼 순서대로 각 컬럼 값을 입력합니다. Diane이 "Puffball"이라는 이름의 새로운 햄스터를 손에 넣었다고합니다. 다음과 같이 INSERT
문을 사용하여 새 레코드를 추가 할 수 있습니다.
mysql>INSERT INTO pet
->VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
여기에서는 문자 값과 날짜 값을 따옴표로 묶인 문자열로 지정하고 있습니다. 또한 INSERT
는 부족한 값을 나타내는 NULL
을 직접 삽입 할 수 있습니다. LOAD DATA
의 경우와 같이 \N
를 사용할 수는 없습니다.
이 예에서 알 수 있듯이 초기 레코드를로드하기 위해 여러 INSERT
문을 사용하면 하나의 LOAD DATA
문을 사용하는 경우보다 훨씬 많은 입력이 필요합니다.