반응형

MySQL/MariaDB 데이터를 CSV 내보내기

 

·      Version : MySQL 5.7

 

MySQL / MariaDB 저장되어 있는 데이터를 CSV 파일로 저장하는 방법에 대해서 알아본다.

 

-        파일로 저장되어 있는 데이터를 MySQL/MariaDB테이블로 Bulk Insert 하기 : http://sqlmvp.kr/220574644101

 

실습에 사용할 데이터베이스 테이블을 생성하고 데이터를 입력 한다.

create database sw_test

 

use sw_test;

 

create table tbl_a (name varchar(10))

 

insert into tbl_a values ('sqlmvp1');

insert into tbl_a values ('sqlmvp1');

insert into tbl_a values ('sqlmvp2');

insert into tbl_a values ('sqlmvp3');

insert into tbl_a values ('sqlmvp4');

insert into tbl_a values ('sqlmvp5');

 

select * from tbl_a;

 


 

아래 스크립트를 사용하여 쿼리 결과를 CSV 파일로 저장한다

SELECT

    name, IFNULL(name, ‘N/A’)

FROM

    tbl_a

INTO OUTFILE '/var/lib/mysql-files/tbl_a.csv'

FIELDS ENCLOSED BY '"'

TERMINATED BY ';'

ESCAPED BY '"'

LINES TERMINATED BY '\r\n';

 

-        INTO OUTFILE : 파일 저장 경로 파일명을 기입한다.( 'C:/tmp/tbl_a.csv')

-        FIELDS ENCLOSED BY : 필드의 값을 큰따옴표(“) 묶는다. 이렇게 하면 쉼표가 포함된 값이 필드 구분 기호로 해석되지 않는다.

-        LINES TERMINATED BY :  행에 대한 종료를 나타낸다. 실습에서는 '\r\n' 구분된다.

-        IFNULL(name, ‘N/A’) : NULL 값이 있는 경우 NULL 대신 다른 (실습에서는 ‘N/A’)으로 표시된다.

-         

CSV파일로 저장시 아래와 같은 오류를 반환하는 경우가 있는데 이는 폴더 접근에 대한 이슈로 접근 권한 획득이 필요하다.

Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

 

secure-file-priv INFILE, OUTFILE 사용할때 파일을 읽을 있는 위치를 제한한다. 아래 명령을 통해서 허용되는 위치를 확인할 있다.

SHOW VARIABLES LIKE "secure_file_priv";

 


 

CSV 저장이 완료되었으면 실제 데이터가 저장되었는지 확인한다. 일부 폴더의 경우 접근 제한이 있으므로 필요에 따라 권한을 획득할 있도록 한다.


 

 

2017-10-23 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

MySQL, MariaDB, MySQL 데이터 내보내기, CSV 저장, outfile, cat, MySQL 쿼리 결과 저장, MariaDB 쿼리 결과 저장


반응형

+ Recent posts