MySQL Import, Export (feat. AWS Lightsail)

환경

로컬: Windows 10 pro, MySQL 8.0, MySQL Workbench 8.0.25

서버: Ubuntu 20.04 LTS, MySQL 8.0.26-0ubuntu0.20.04.2


왜?

로컬 Mysql에서 Export한 데이터 파일(csv)을 서버 MySQL에 Import 하는 과정을 정리했다.


Export 

MySQL Workbench 8.0 CE에서 Table Data Export Wizard를 이용하여 테이블 데이터를 Export 할 수 있다. 

윈도우 환경에서 Export 하는 경우 아래와 같은 특징이 있다. 

  • Line Separator를 LF로 지정해도 CRLF로 생성된다. 
  • 인코딩 형식을 지정할 수 없다. CP949로 생성된다. 

Table Data Export Wizard에 인코딩 타입을 주는 옵션이 있을 수도 있겠다. 하지만 현재는 에러가 발생해서 확인할 수 없었다. MySQL 사이트에 버그 리포트가 있는 것을 보았다. 


mysqldump 명령어를 이용하는 방법도 있다. 

Import

원격 서버에 데이터를 밀어넣기 위해 MySQL Workbench에서 제공하는 Table Data Import 기능을 사용하면 느리다. Export한 파일을 Ubuntu 서버에 올려놓고, MySQL에서 직접 import 하는 것이 최선이다. 단, 윈도우에서 Export 한 파일이라면 사전에 수행할 작업이 있다. 

  • 파일의 인코딩 형식을 BOM 없는 UTF-8로 전환한다. 

그리고 Import를 수행하면 아래와 같은 에러가 발생한다. 

mysql> LOAD DATA INFILE '/home/ubuntu/target_data.csv'
    -> INTO TABLE target_table
    -> FIELDS TERMINATED BY ';'
    -> ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n'
    -> IGNORE 1 ROWS;
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
mysql>

MySQL을 기본 설치한 경우 Import 할 파일은 특정 경로에 있어야 한다. secure-file-priv 옵션을 지정하거나, Import 할 파일을 아래 경로로 이동하고 Import를 수행하자.  

  • /var/lib/mysql-files/target_data.csv

순식간에 끝나는 것을 볼 수 있다. 


댓글 쓰기

0 댓글