상위 목록: 하위 목록: 작성 날짜: 읽는 데 16 분 소요

데이터 삽입(Data Insert)

데이터베이스(Database)를 활용하기 위해서는 테이블(Table)에 데이터(Data)가 존재해야 합니다.

테이블(Table)을 생성했다면 열(Column)에 대한 정보만 정의되어 있습니다.

다음과 같은 테이블을 생성했다면, 열(Column)행(Row)에 대한 속성만 정의되어 있습니다.


  location date variant num_sequences perc_sequences num_sequences_total
             

그러므로 위와 같은 테이블에 데이터(Data)을 입력하여 행(Row)을 추가합니다.

만약, 데이터베이스에 네 개의 행(Row)을 추가한다면 다음과 같이 표현할 수 있습니다.


  location date variant num_sequences perc_sequences num_sequences_total
1 Angola 2020-12-21 B.1.160 0 0 93
2 Angola 2020-12-21 B.1.620 0 0 93
3 Angola 2020-12-21 B.1.258 0 0 93
4 Angola 2020-12-21 B.1.221     93



행 삽입

단일 행 추가

INSERT INTO `covid`.`variants`
VALUES ('Angola', '2020-12-21', 'B.1.620', 0, 0, 93);

테이블에 행을 삽입하는 방법은 INSERT INTO `{데이터베이스의 이름}`.`{테이블의 이름}` VALUES ({열의 순서에 따른 데이터});의 구조로 명령어를 실행합니다.

열(Column)의 순서에 따라 데이터가 입력됩니다.

그러므로 'Angola', '2020-12-21', 'B.1.160', 0, 0, 93 데이터는 각각의 location, date, variant, num_sequences, perc_sequences, num_sequences_total 열(Column)에 삽입됩니다.

데이터의 개수는 열의 개수와 동일해야 하며, 입력되는 데이터의 형식은 열의 속성과 동일해야 합니다.


다중 행 추가

INSERT INTO `covid`.`variants`
VALUES ('Angola', '2020-12-21', 'B.1.620', 0, 0, 93),
       ('Angola', '2020-12-21', 'B.1.258', 0, 0, 93);

테이블에 여러 행을 한 번에 추가하는 방법은 쉼표(,)를 통해 구분하여 데이터를 입력할 수 있습니다.

단일 행을 추가하는 방법과 조건이 동일하며, 데이터 개수와 속성이 일치해야 합니다.


특정 필드에 행 추가

INSERT INTO `covid`.`variants`
       (`location`, `date`)
VALUES ('Angola', '2020-12-21'),
       ('Angola', '2020-12-21'); 

테이블에 행을 추가할 때, 필드의 이름을 작성하여 데이터를 추가할 수 있습니다.

테이블에 특정 열에 대한 행을 삽입하는 방법은 INSERT INTO `{데이터베이스의 이름}`.`{테이블의 이름}` (필드 이름) VALUES ({필드의 순서에 따른 데이터});의 구조로 명령어를 실행합니다.

예시와 같은 데이터를 추가하게 되면, locationdate 필드에 값이 할당됩니다.

위와 같은 경우에는 variant, num_sequences, perc_sequences, num_sequences_total 필드의 모든 속성이 Null 값을 갖는 데이터를 추가할 수 있거나, 기본값으로 할당된 값이 존재해야 합니다.

만약, 필드를 명시하지 않은 열에서 Null 값을 허용하지 않거나 기본값이 없다면 오류가 발생합니다.

오류가 발생하지 않는다면 명시하지 않은 필드의 데이터는 기본값으로 채워지거나 Null 값이 할당됩니다.



CSV 파일 반영

권한 설정

MySQL Workbench에서 CSV 파일을 추가하는 경우에는 MySQL Connections에서 설정을 변경해야 합니다.

InstanceConnectionOthers에서 OPT_LOCAL_INFILE=1 구문을 추가합니다.

만약, MySQL 콘솔창에서 실행하는 경우에는 다음과 같은 옵션을 주어 실행할 수 있습니다.


mysql --local-infile -h {Hostname} -u {Username} -p

MySQL을 접속시 --local-infile 옵션과 함께 실행합니다.


ERROR 3948 해결

set global local_infile=true;
show global variables like 'local_infile';

만약, ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides 에러가 발생한다면 위와 같은 구문을 통해 해결할 수 있습니다.

local_infile의 필드의 값이 True로 설정되어 있다면, 로컬 경로의 파일을 불러올 수 있습니다.


파일 반영

LOAD DATA LOCAL INFILE 'covid-variants.csv'
INTO TABLE `covid`.`variants`
FIELDS TERMINATED BY ","
IGNORE 1 LINES;

테이블에 CSV 파일을 삽입하는 방법은 LOAD DATA LOCAL INFILE `파일 경로` INTO TABLE `{데이터베이스의 이름}`.`{테이블의 이름}` {옵션}의 구조로 명령어를 실행합니다.

covid-variants.csv라는 CSV 파일을 불러와 covid.variants 테이블에 반영합니다.

필드를 구분하는 단위를 쉼표(,)로 사용하여 테이블에 데이터가 추가됩니다.

또한, 컬럼명을 무시하기 위해 첫 번째 행은 건너뜁니다.

csv 파일의 첫 번째 행은 컬럼 명칭이 작성되어 있습니다.

테이블과 CSV 파일의 열의 이름 및 속성은 동일해야 합니다.

예제로 사용되는 covid-variants.csv 파일은 다음 링크에서 다운로드 할 수 있습니다.

covid-variants.csv 다운로드 : 다운로드

댓글 남기기