mssql 에서는 bcp 라는 툴을 통해 csv 형식의 데이터들을 테이블에 추가할 수 있다. mysql 에서는 load data 라는 sql 명령어를 사용한다.

https://dev.mysql.com/doc/refman/8.0/en/load-data.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.2.7 LOAD DATA Statement

13.2.7 LOAD DATA Statement LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name [, partition_name] ...)] [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'

dev.mysql.com

use test;

create table if not exists bulkinsert
(
	seq_id bigint not null auto_increment primary key,
    col_char_1 char(64) COLLATE utf8mb4_bin NOT NULL COMMENT 'col1',
    col_bigint_2 bigint NOT NULL COMMENT 'col2',
    col_char_3 char(64) COLLATE utf8mb4_bin NOT NULL COMMENT 'col3'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

예를 들어 test db 에 bulkinsert 라는 테이블을 만들고 데이터를 추가해보자.

load data local infile 'D:/test/work/test/bulkinsert.csv' # 경로
replace into table bulkinsert # 테이블명
lines terminated by '\n' # 열 구분자
(col_char_1, col_bigint_2, col_char_3); # 칼럼 목록

추가할 데이터 파일의 절대 경로를 적어주고 대상 테이블, 열 구분자, 칼럼 목록을 적어주면 된다. 

Error Code: 2068. LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.

별 문제없이 실행되면 좋겠지만 기본 설정으로 실행하면 위와 같은 오류 메시지가 보일 수 있다.

MySQL Workbench 를 사용 중이라면 Edit Connection > Connection > Advanced 에 OPT_LOCAL_INFILE=1 을 추가하자. mysql cli 를 사용 중이라면 --local-infile=1 을 실행 파라미터에 추가하자. 

P.S. 내 개발환경에서는 대문자로 해야했다. 테이블 이름 같은 경우 윈도 버전은 대소문자 안가리고 리눅스는 가렸는데 실행 파람은 좀 특이했다.

https://stackoverflow.com/questions/63361962/error-2068-hy000-load-data-local-infile-file-request-rejected-due-to-restrict

 

ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access

comment I'm trying , mysql> LOAD DATA LOCAL INFILE '/var/tmp/countries.csv' INTO TABLE countries FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (

stackoverflow.com

참고 :
https://ohgyun.com/777

 

MySql: LOAD DATA INFILE 로 대용량 데이터 인서트하기

발생일: 2017.11.17 키워드: MySQL, LOAD DATA INFILE, insert large amount of dataset into mysql database, 대용량 데이터 추가 문제: 대용량 데이터를 MySQL 디비에 인서트하려고 한다. 가장 효율적인 방법이..

ohgyun.com

https://java119.tistory.com/55

 

[MySQL || MariaDB] 데이터 파일 IMPORT 하기(Feat.LOAD DATA INFILE)

먼저 시작하기에 앞서 오늘 예제로 쓰일 테이블 CREATE TABLE computerValue( id int, cpu_value int, memory_value int, graphics_card_value int, time_value datetime ) 실험 대상 : MariaDB 10.1.41가 설치 돼..

java119.tistory.com

 

728x90

+ Recent posts