User Tools

Site Tools


Sidebar


Здравствуйте!

Меня зовут Михаил!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Моя специализация - виртуализация!

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (910) 911-96-23

linux_faq:перенос-данных-из-screw-turnwiki-в-dokuwiki

Как мигрировать

Нужно извлечь данные из 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()
}

Конвертация

Конвертер разметки: пишите на mike@autosys.tk
Конвертируем:

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

Enter your comment. Wiki syntax is allowed:
I R D U I
 
linux_faq/перенос-данных-из-screw-turnwiki-в-dokuwiki.txt · Last modified: 2016/12/26 14:20 by admin