Loading...
MySQL 9.5 Reference Manual 9.5의 5.3.3 Loading Data into a Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
table을 생성한 후에는 데이터를 채워 넣어야 합니다.
이를 위해 LOAD DATA statement와 INSERT statement를 사용할 수 있습니다.
pet 레코드가 아래와 같이 표현될 수 있다고 가정해 봅시다. (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 |
빈 table로 시작하므로, 이를 채우는 쉬운 방법은 각 동물마다 한 row를 포함하는 텍스트 파일을 만든 다음, 단일 statement로 그 파일의 내용을 table에 로드하는 것입니다.
예를 들어 pet.txt라는 텍스트 파일을 만들고, 한 line에 하나의 레코드를 두며, 값은 탭으로 구분하고, CREATE TABLE statement에서 열을 나열한 순서대로 기록할 수 있습니다. (아직 살아 있는 동물의 알 수 없는 sex나 death date와 같은) 누락된 값에는 NULL 값을 사용할 수 있습니다. 이를 텍스트 파일에서 표현하려면 \N (백슬래시, 대문자 N)을 사용합니다. 예를 들어 Whistler라는 새의 레코드는 (값 사이의 공백이 단일 탭 문자라고 할 때) 다음과 같습니다:
1Whistler Gwen bird \N 1997-12-09 \N
텍스트 파일 pet.txt를 pet table에 로드하려면 다음 statement를 사용합니다:
1mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
Windows에서 line terminator로 \r\n을 사용하는 에디터로 파일을 생성했다면, 대신 다음 statement를 사용해야 합니다:
1mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet 2 LINES TERMINATED BY '\r\n';
(Apple 머신에서 macOS를 실행 중이라면 LINES TERMINATED BY '\r'를 사용하는 것이 좋을 것입니다.)
원한다면 LOAD DATA statement에서 column 값 구분자와 line 끝 표시를 명시적으로 지정할 수 있지만, 기본값은 탭과 라인피드입니다.
이 기본값만으로도 pet.txt 파일을 올바르게 읽는 데 충분합니다.
statement가 실패한다면, 기본적으로 MySQL 설치에서 로컬 파일 기능이 활성화되어 있지 않을 가능성이 큽니다. 이를 변경하는 방법에 대한 정보는 Section 8.1.6, “Security Considerations for LOAD DATA LOCAL”을 참조하십시오.
새 레코드를 한 번에 하나씩 추가하려는 경우, INSERT statement가 유용합니다.
가장 단순한 형태에서는 각 column에 대한 값을 CREATE TABLE statement에서 열이 나열된 순서대로 제공합니다.
예를 들어 Diane이 “Puffball”이라는 새 hamster를 얻었다고 가정합시다. 다음과 같은 INSERT statement를 사용하여 새 레코드를 추가할 수 있습니다:
1mysql> INSERT INTO pet 2 VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
여기에서 문자열과 날짜 값은 따옴표로 둘러싸인 문자열로 지정합니다.
또한 INSERT에서는 누락된 값을 나타내기 위해 NULL을 직접 삽입할 수 있습니다. LOAD DATA를 사용할 때처럼 \N을 사용하지는 않습니다.
이 예에서 볼 수 있듯이, 초기 레코드를 로드할 때 여러 개의 INSERT statement를 사용하는 것보다 단일 LOAD DATA statement를 사용하는 편이 입력해야 할 내용이 훨씬 적습니다.
5.3.2 Creating a Table
5.3.4 Retrieving Information from a Table