Нужно извлечь данные из 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.
Сначала даем права на файлы.
С помощью плагина Searchindex Manager импортируем страницы в DokuWiki