부록2: SQL 부록

1. MySQL 재설치 방법

  1. 레지스트리 편집기를 켜고, 편집–>찾기에서 MySQL을 검색
  2. 모든 파일을 삭제
  3. 인스톨러 재설치

2. MySQL 8.0 Windows에서 파일 업로드 방법

  • 아래의 오류가 날 때, 조치방법입니다.

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

  1. C:\ProgramData\MySQL\MySQL Server 8.0 디렉토리의 설정파일 (my.ini)을 텍스트 편집기로 오픈,

    • 이 때, 수정후 저장이 안될 수 있으니, 관리자 권한으로 오픈할 것

    • C:\ProgramData\MySQL\MySQL Server 8.0 디렉토리가 숨김설정이 된 경우 [파일탐색기]에서 안보이니 아래 처럼 조치 할 것

      숨김설정해제

  2. my.ini의 아래의 부분을 찾아 추가 또는 수정

    [client]
    local_infile=1   ## <--- 이 부분 추가
    
    ...
    ...
    
    # Secure File Priv. # 업로드 가능 디렉토리 변경시 아래의 폴더를 변경
    secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
  3. my.ini 저장

    • 만일, 수정 후 저장이 안되면 다른 이름으로 저장(예를들어 my.txt로 저장) 후
    • 원 파일(my.ini)을 삭제 후, my.txt의 이름을 my.ini로 수정
  4. MySQL 8.0 Command Line Client - Unicode를 실행

    • 패스워드 입력

  5. 아래의 명령을 실행하여 결과 확인

    mysql> show global variables like 'local_infile';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | local_infile  |  OFF  | <-- 이 부분이 OFF 인지를 확인
    +---------------+-------+
    (this means local_infile is disable)
    
  6. 위의 결과 local_infile이 OFF이면 아래의 명령을 실행하고 종료

    mysql> set global local_infile=true;
    mysql> exit;

  1. MySQL에 재 접속 후 업로드가 되는 지 확인

    CREATE TABLE jskim.stock(
     날짜 DATE,
     종가 INT,
     시가 INT,
     고가 INT,
     저가 INT, 
     거래량 INT
    )CHARACTER SET utf8;
    
    LOAD DATA LOCAL INFILE "D:/셀트리온.csv" INTO TABLE jskim.stock
     CHARACTER SET utf8 
     FIELDS TERMINATED BY ","
     LINES TERMINATED BY "\n"
     IGNORE 1 LINES (날짜,종가,시가,고가,저가, 거래량);
    mysql> SELECT * FROM jskim.stock limit 10;
    +------------+--------+--------+--------+--------+---------+
    | 날짜       | 종가   | 시가   | 고가   | 저가   | 거래량  |
    +------------+--------+--------+--------+--------+---------+
    | 2020-06-08 | 256000 | 260500 | 263000 | 253000 | 1259416 |
    | 2020-06-05 | 256500 | 244000 | 260500 | 243000 | 2899453 |
    | 2020-06-04 | 247000 | 227500 | 248000 | 227000 | 3037387 |
    | 2020-06-03 | 227500 | 231500 | 235000 | 224500 | 1813508 |
    | 2020-06-02 | 224500 | 230000 | 232500 | 222000 | 1115810 |
    | 2020-06-01 | 227500 | 214000 | 232500 | 213000 | 3410255 |
    | 2020-05-29 | 213500 | 212000 | 214000 | 209500 |  660343 |
    | 2020-05-28 | 211000 | 212500 | 213500 | 206000 |  716459 |
    | 2020-05-27 | 213000 | 212000 | 214000 | 211000 |  591712 |
    | 2020-05-26 | 214500 | 215500 | 216500 | 213000 |  482616 |
    +------------+--------+--------+--------+--------+---------+
    10 rows in set (0.00 sec)

3. MySQL DB 백업 및 복원

  • DB 백업

    $ mysqldump -u [사용자ID] -p [패스워드] [데이터베이스명] > [백업DB명].sql
  • 테이블 백업

    $ mysqldump -u [사용자ID] -p [패스워드] [데이터베이스명] [테이블명] > [백업테이블명].sql
  • DB 복원

    $ mysql -u [사용자ID] -p [패스워드] [복원할DB] < [백업DB명].sql
  • 테이블 복원

    $ mysql -u [사용자ID] -p [패스워드] [복원할DB] < [백업테이블명].sql