본문 바로가기
개발자 놀이/병신 삽질 - 주식 매매 프로그램 (Python)

[mysql] data export & import (윈도우 mysql 8.X --> 우분투 mysql 5.X)

by ㅁ ㅣ ㅊ ㅣ ㄴ ㅏ ㅇ ㅣ 2024. 1. 4.

병신 삽질 : 2일 ㅎㅎ

 

 

구름 ide 에서
리눅스 서버와 10기가 저장공간 지원해주기 때문에...

 

그곳에 DB를 저장해놓고 싶어졌다 ㅋ

 

 

1. 집(윈도우, mysql 8.x) 에서 data export ==> *.sql 파일 생성 (약 1기가)

 

2. 병원에서 노트북으로, 구름ide 오랜만에 접속,

    예전에 mysql 포트포워딩 해놓은 설정이 안 바뀌고 잘 유지되고 있었음.

     mysql workbench 로 data import 시도.

 

3. collate error 만남 --;;

    0000 line 에서 collate utf8mb4_0900_ai_ci 에러라는데...

    메모장으로 sql 파일 열어볼까 시도. 파일이 커서 안 열림. 다른 텍스트에디터 사용하면 열어서 내용 볼 수 있겠지만...

    디비 개발자답게... 명령어질로 해결하고 싶었음.

 

   폭풍 검색질로, 테이블의 collate 변경하는 방법은 찾아냄 ㅋ

 

show table status;

alter table `000020_01min` collate 'utf8mb4_0900_ai_ci';

drop procedure if exists updatetable;
delimiter $$
create procedure updatetable()
begin
	declare done boolean default false;
    declare nm_table char(255);
    declare cur cursor for
		select table_name
        from information_schema.tables
        where table_schema='stock_backup'
        and table_type='BASE TABLE';
	declare continue handler for not found set done=true;
    
    open cur;
    my_loop : loop
		fetch cur into nm_table;
        
		if done then
			leave my_loop;
		end if;
        
        set foreign_key_checks=0;
        
        set @stmt = concat('alter table ','`',nm_table,'`',' collate utf8mb4_general_ci;');
        prepare stmt1 from @stmt;
        execute stmt1;
        deallocate prepare stmt1;
        
        set foreign_key_checks=1;
        
    end loop;
    close cur;
end$$
delimiter ;

call updatetable();

show table status;

 

 

4. import 재시도 해봤으나,,, 이번에는 collation_connection 에러 --;

 

   export 할 때, 테이블(base table)과 뷰(view) 함께 export 되는거였고...

 

   3번 alter table 로 테이블 콜레이트는 변경했으나... 뷰의 collation_connection 을 변경해야 하는데...

 

  alter view 등등 sql 명령어로 변경 가능할까 해서 신나게 검색해봤는데... 나는 못 찾겠음 ㅜㅜ

 

  set collation_connection='utf8mb4_general_ci';

 

  이 명령어로는 이제부터의 세팅을 바꾸는 것이기에...(즉, 지금부터 생성하는 뷰들은,,, 콜레이션커넥션이 이걸로 생성됨)

  그러나 이미 만들어진 뷰의 콜레이션커넥션 바꾸는 법은 못 찾았음.

 

5. export 하면서 만들었던, 즉 import 할 *.sql 파일을 직접 열서서,

    _0900_ai_   --> _general_

    로 모두 변경해주면 에러없이 5.X mysql 에서 import 가능함.

   sql 명령어질로 view collation_connection 변경하고 싶었으나... 이젠 나를 놔줄 때가 된 듯. 이틀 삽질 ㅋ

 

6. 1기가 넘는 대용량 텍스트 파일... 예전 회사에서 사용하던 acroedit 사용하면 잘 열리는 것은 알지만...

    새로운 프로그램 한 번 찾아볼까 하여 검색... liquid studio 의 large text editor(?) 라는 것을 추천하는 양반이 있길래, 설치하여 열어봤음. 로딩시간 1초?도 안 걸림... 헉... 좋은 세상이군 ㅎㅎ

    요새 파이썬 프로그래머 놀이중이라, 파이참에서 열어볼까 생각하다가... 파이참 프로그램이 좀 무거운 느낌이 있는 터라... 시도 조차 안 해봤었지... liquid studio로 열어보고난 후, 그냥 속는 셈치고 열어보자 생각.

    먹통 되면... 프로그램 종료할 각오로.

    그런데 왠걸.... 파이참에서도 바로 눈앞에 열림 ㅋ

    1기가 넘는 텍스트 파일 무리없이 열림. ㅎ ㅓ ㅎ ㅓ. 근데... read-only mode 라고 하는구만 --;; 어쩐지 ㅋ

 

 

    1기가 sql문 mysql에서는 응답없음 으로 안 열림. 오래 기다리면 열릴는지는 모르겠음 ㅋ

 

요약

 

1. 난 귀찮다. -->

    텍스트에디터로 확장자 sql파일 열어서 일괄 변경한 후  import

    _0900_ai_ --> _general_

   

2. sql 반복문 연습 겸, sql 명령어 익히고 싶다. -->

   sql 명령어질로 base table들은 다 바꾸고...

   텍스트에디터질로 view들의 collation_connection 바꿈.

 

3. 이틀동안 병신 개삽질 잘 했네 ㅋ