Как мигрировать
Нужно извлечь данные из ScrewTurnWiki, разложить страницы в текстовые файлы и потом импортировать эти файлы в DokuWiki. Требования к файлам: имена без пробелов и только в нижнем регистре, расширение .txt. Разметка dokuwiki.
Извлекаем содержимое страниц
Вот код на Go для того, чтобы извлечь содержимое страниц, сохранить его в виде файлов с именами - названиями страниц и разложить по папкам с именами namespaces.
package main
import (
"code.google.com/p/odbc"
"database/sql"
"fmt"
"log"
"strings"
"os"
)
var (
title string
content string
query string
pagename string
filename string
namespace string
)
func main() {
db, err := sql.Open("odbc", "DRIVER=FreeTDS;SERVER=192.168.122.169;UID=screw;PWD=password;DATABASE=screw;TDS_Version=8.0;PORT=1433;")
if err != nil {
fmt.Println("Error in connect DB")
log.Fatal(err)
}
query = "select Page, Namespace, Content from dbo.PageContent where Revision = -1"
rows, err := db.Query(query)
if err != nil {
log.Fatal(err)
}
for rows.Next() {
if err := rows.Scan(&pagename, &namespace, &content); err != nil {
log.Fatal(err)
}
// fmt.Println(pagename)
// fmt.Println(content)
filename= strings.ToLower("/home/mike/wiki/test/" + namespace)
os.Mkdir (filename, 0777)
filename= strings.ToLower("/home/mike/wiki/test/" + namespace + "/" + pagename)
fo, err := os.Create(filename)
if err != nil {
panic(err)
}
if _, err := fo.WriteString("##PAGE##\n" + content); err != nil {
panic(err)
}
defer fo.Close()
}
defer rows.Close()
}
Конвертация
Конвертер разметки: screwturn-to-dokuwiki-converter.rar
Ставим то что нужно для сборки:
apt-get install --assume-yes bison build-essential curl flex g++
Даем права на запуск makeit.sh и testit.sh.
Собираем:
./makeit.sh
тестируем:
./testit.sh
(выдаст результат в compilatorMy.out)
Конвертируем:
find ./test3/ -type f -name "*" -exec ./a.out {} {}.txt \; -print
Удаляем файлы без расширения txt:
find ./test3/ -type f ! -name "*.txt" -exec rm {} \; -print
Архивируем и переносим на хост с DokuWiki.
Импорт в dokuwiki
Сначала даем права на файлы.
С помощью плагина Searchindex Manager импортируем страницы в DokuWiki
Discussion