WIKI

SEOUL‍
wiki:sw:mediawiki:ti...

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
wiki:sw:mediawiki:tips [2023/06/15 01:19] – 제거됨 - 바깥 편집 (Unknown date) 127.0.0.1wiki:sw:mediawiki:tips [2025/11/06 01:12] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +<!DOCTYPE markdown>
 +
 +# Mediawiki Tips
 +
 +## 개요
 +[[:tech:mediawiki|미디어위키]]를 사용하는 데에 있어 유용한 tip들의 모음.
 +
 +## 백업
 +
 +### 각 페이지를 따로 내보내기
 +아래 내용은 최신 미디어위키(1.35 이상)에 해당한다. 그 이전 내용은 [여기](https://stackoverflow.com/questions/39503835/how-to-export-all-pages-from-mediawiki-into-individual-page-files/69308610#69308610)를 참고하라.
 +
 +우선, sql에 접근하여 전체 페이지의 최신 revision을 하나의 파일로 dump한다.
 +
 +```sql
 +SELECT page_title, page_touched, old_text
 +FROM revision,page,text,content,slots
 +WHERE page.page_latest=revision.rev_id AND revision.rev_id=slots.slot_revision_id AND slots.slot_content_id=convert(substring(content.content_address,4),int) AND convert(substring(content.content_address,4),int)=text.old_id AND page_namespace!='6' AND page_namespace!='8' AND  page_namespace!='12'
 +INTO OUTFILE '/var/tmp/wikipages.csv' 
 +FIELDS TERMINATED BY '\n' 
 +ESCAPED BY ''
 +LINES TERMINATED BY '\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n';
 +```
 +
 +그 다음, 파이썬 등의 스크립트를 통해 이를 각각의 파일로 분리한다.
 +
 +```python
 +with open('wikipages.csv', 'r') as f:
 +    alltxt = f.read().split('\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n')
 +
 +    for row in alltxt:
 +        one = row.split('\n')
 +        name = one[0].replace('/','-')
 +        try:
 +            del one[0]
 +            del one[0]
 +        except:
 +            continue
 +        txt = '\n'.join(one)
 +        of = open('~/wikipages/' + name + '.txt', 'w')
 +        of.write(txt)
 +        of.close()
 +```
 +---- struct data ----
 +pageinfo.status      : Draft
 +----