Redmine WiKi Convert Script
rm convert code
-- 임시테이블 삭제 drop table if exists tempWiki1; drop table if exists tempWiki1_1; drop table if exists tempWiki1_2; drop table if exists tempWiki2; drop table if exists tempWiki3; drop table if exists tempWiki4; drop table if exists tempWiki4_1; drop table if exists tempWiki4_9; drop table if exists tempWiki5; /*작업전 원본 text select `text` from bitnami_redmine.wiki_contents where id = 34 into outfile 'D:\\rm_wiki_files\\origine_32.md' CHARACTER SET utf8;; */ -- realgrid web wiki만 뽑아낸다. 첫행을 분리해 내고 제거한다. create temporary table if not exists tempWiki1 AS ( select id, substring_index(`text`, '\r\n', 1) as filename, replace(text, substring_index(`text`, '\r\n', 1), '') as body from bitnami_redmine.wiki_contents where page_id in ( select id from bitnami_redmine.wiki_pages where wiki_id = 2 and parent_id = 33) and page_id <> 467 ); -- filename을 파일명으로 만들기 위한 작업 create temporary table if not exists tempWiki1_1 as ( select id, replace(replace(replace(filename, ' ', ' '), 'h1. ', ''), 'h2. ', '') filename, replace(replace(body, 'h1.', '###'), 'h2. ', '#### ') body from tempWiki1 ); -- pre code tag create temporary table if not exists tempWiki1_2 as ( select id, filename, replace(body, 'pre type="code"', 'pre class="prettyprint"') body from tempWiki1_1 ); -- ------------- temp create temporary table if not exists tempWiki2 as ( select * from tempWiki1_2 ); -- seperate an object types as 'part' in the filename field create temporary table if not exists tempWiki3 as ( select id, case when locate('Type', filename) > 0 then 'Types' when locate('Class', filename) > 0 then 'Types' when locate('GridBase', filename) > 0 then 'Objects' when locate('TreeDataProvider', filename) > 0 then 'Objects' when locate('LocalDataProvider', filename) > 0 then 'Objects' when locate('DataProvider', filename) > 0 then 'Objects' when locate('TreeView', filename) > 0 then 'Objects' when locate('GridView', filename) > 0 then 'Objects' else 'Features' end as part, case when locate('Type', filename) > 0 then trim(replace(filename, ' Type', '')) when locate('Class', filename) > 0 then trim(replace(filename, 'Class', '')) when locate('GridBase', filename) > 0 then trim(replace(filename, 'GridBase', '')) when locate('TreeDataProvider', filename) > 0 then trim(replace(filename, 'TreeDataProvider', '')) when locate('LocalDataProvider', filename) > 0 then trim(replace(filename, 'LocalDataProvider', '')) when locate('DataProvider', filename) > 0 then trim(replace(filename, 'DataProvider', '')) when locate('TreeView', filename) > 0 then trim(replace(filename, 'TreeView', '')) when locate('GridView', filename) > 0 then trim(replace(filename, 'GridView', '')) else filename end as title, case when locate('GridBase', filename) > 0 then 'GridBase' when locate('TreeDataProvider', filename) > 0 then 'TreeDataProvider' when locate('LocalDataProvider', filename) > 0 then 'LocalDataProvider' when locate('DataProvider', filename) > 0 then 'DataProvider' when locate('TreeView', filename) > 0 then 'TreeView' when locate('GridView', filename) > 0 then 'GridView' else null end as objectname, filename, body from tempWiki2 ); -- get object directiontype create temporary table if not exists tempWiki4 as ( select id, part, objectname, replace(replace(filename, ' ', '_'), '\r\n', '') as filename, case when left(title, 2) = 'on' and part = 'Objects' then 'Callback' when left(title, 2) <> 'on' and part = 'Objects' then 'Function' end as directiontype, -- link path case when part = "Features" then concat("/api/features/") when part = "Types" then concat("/api/types/") when part = "Objects" then concat("/api/", objectname, "/") end as linkpath, -- make permalink field case when part = "Features" then concat("/api/features/", title, "/") when part = "Types" then concat("/api/types/", title, "/") when part = "Objects" then concat("/api/", objectname, "/", title, "/") end as permalink, title, body from tempWiki3 ); -- convert to link mark create temporary table if not exists tempWiki4_1 as ( select id, part, objectname, directiontype, permalink, title, filename, linkpath, replace(replace(replace(body, '[[APIReference#', '[['), '[[', '['), ']]', concat('](', linkpath, ')')) body from tempWiki4 ); -- ------------- temp > do not change table name. create temporary table if not exists tempWiki4_9 as ( select * from tempWiki4_1 ); -- set document meta tag create temporary table if not exists tempWiki5 ( nid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, id int, meta varchar(8000), filename varchar(200), body text ) as ( select id, concat("---\nlayout: apipost\n" "title: ", ifnull(title, filename), '\n' "part: ", ifnull(part, ""), '\n' "objectname: ", ifnull(objectname, ""), '\n' "directiontype: ", ifnull(directiontype, ""), '\n' "permalink: ", ifnull(permalink, ""), '\n' "---", '\n', replace(body, '\r\n', '\n')) as meta, filename, body from tempWiki4_9 ); -- generate the script that save as md file. /* select concat('select meta from tempWiki5 where nid=', nid, ' into outfile ''D:\\\\rm_wiki_files\\\\', replace(filename, '\r\n', ''), '.md'' CHARACTER SET utf8;') from tempWiki5; */ /* test select meta from tempWiki5 where nid = 1 into outfile 'D:\\rm_wiki_files\\outfile_test1.md' CHARACTER SET utf8; select replace(meta, '\n', '\n') from tempWiki5 where id = 1 into outfile 'D:\\rm_wiki_files\\outfile_test2.md' CHARACTER SET utf8; select concat('a', '\n', 'b'); select concat('a', '\n', 'b') into outfile 'D:\\rm_wiki_files\\outfile_test1.md' CHARACTER SET utf8; select concat('a', CHAR(10 using utf8), 'b', '한') into outfile 'D:\\rm_wiki_files\\outfile_test2.md' CHARACTER SET utf8; select concat('a', CHAR(10 using utf8), 'b', '한') into outfile 'D:\\rm_wiki_files\\outfile_test3.md' CHARACTER SET utf8 LINES TERMINATED BY '\n'; */