mysql의 table 데이터를 stata로 옮기기 cs

웹 기반 실험 같은 것을 하면 mysql의 데이터를 stata 등의 통계패키지로 분석해야 할 일이 생긴다. 이 팁은 그러한 경우를 위한 것이다. 



mysql의 file privilege가 on으로 설정되어 있다면: 바로 3단계로 갈 것. 

1단계: 덤프를 뜬다. 

mysqldump -u my_account -p my_database my_table > my_table.sql

2단계: 내 리눅스에서 복원한다. 

mysql -u my_account -p  < my_table.sql

3단계: mysql 접속 후 csv 생성한다. 

select * into outfile 'result.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n' from my_table;

4단계: /var/lib/mysql/my_database 밑에 있는 result.csv 파일을 적당한 곳으로 옮긴다. 아마 권한 때문에 sudo해야 할 것이다. 

sudo mv /var/lib/mysql/my_database/result.csv ~/Desktop/

5단계: 헤더를 설정해야 하므로 다시 mysql에서 desc my_table 명령으로 필드 리스트를 띄우고 텍스트 편집기에 복사한다. 
필드 리스트를 제외한 모든 정보를 지우고, \n을 쉼표(,)로 바꾼다. 마지막 쉼표는 제거. --> 클립보드에 복사한다. 

6단계: result.csv 의 첫 줄에 5단계의 결과물을 붙여넣는다. 
\N은 모두 dot(.)으로 변환하고, 역슬래쉬(\)은 모두 제거한다. 

7단계: stata에서 csv로 부르면 끝!

insheet using "~/Desktop/result.csv", comma


아마도 더 쉬운 방법이 있는데, 내가 모르는 거겠지;;

하지만 그 전에는 위와 같은 결과를 얻기 위해서 300개가 넘는 변수들을 일일히 텍스트 에디터로 어루만져주고 엑셀에 복사한 뒤, 열 어긋난 것들 일일히 맞춰주고, 틀린데 없나 확인한 뒤 csv로 만들어서 스타타에서 불렀었다.. 이 작업만 일주일이 걸렸는데, 이제는 10분이면 할 수 있게 된 것 아닌가. 게다가 서로 다른 table들 합칠때에도 일일히 변수 어긋난게 없는지 확인하면서 엑셀에서 붙여나갔었는데, 이렇게 해버리면 그냥 append하면 끝이다. 

덧글

댓글 입력 영역



twitter

Twitter

MathJax