Ticket #647: RT To Trac.sql

File RT To Trac.sql, 4.4 kB (added by nik_js@hotmail.com, 2 years ago)

Convert RT to Trac SQL

Line 
1 --RT MySQL Database
2
3 --Tickets
4 SELECT CONCAT('INSERT INTO ticket (id, component, time, priority, owner, reporter, summary) VALUES ('
5 , Tickets.id,
6 ', ''',
7 Queues.Name,
8 ''', ',
9 'EXTRACT(EPOCH FROM ''',
10 Tickets.Created, '''::timestamp), ',
11 Tickets.Priority,
12 ', ''',
13 Owners.Name,
14 ''', ''',
15 COALESCE((SELECT Content FROM ObjectCustomFieldValues Requestors WHERE Tickets.id = Requestors.ObjectId AND Requestors.CustomField = 1 LIMIT 1), ''),
16 ''', ''',
17 REPLACE(Tickets.Subject, '''', ''''''),
18 ''');'
19 )
20 FROM Tickets
21 INNER JOIN Users Owners ON Tickets.Owner = Owners.Id
22 INNER JOIN Queues ON Queues.id = Tickets.Queue
23 WHERE Tickets.id > 1
24 ORDER BY Tickets.id
25 INTO OUTFILE 'Tickets.sql';
26
27 --Status
28 SELECT CONCAT('INSERT INTO ticket_custom (ticket, name, value) VALUES (',
29 Tickets.id,
30 ', ''current_status'', ''',
31 Tickets.Status,
32 ''');')
33 FROM Tickets
34 INTO OUTFILE 'Status.sql';
35
36 --Effort
37 SELECT CONCAT('INSERT INTO ticket_custom (ticket, name, value) VALUES (',
38 Tickets.id,
39 ', ''development_effort'', ''',
40 MIN(ObjectCustomFieldValues.Content),
41 ''');')
42 FROM Tickets
43 INNER JOIN ObjectCustomFieldValues ON ObjectCustomFieldValues.ObjectId = Tickets.id
44 AND ObjectCustomFieldValues.CustomField = 2
45 GROUP BY Tickets.id
46 ORDER BY Tickets.id
47 INTO OUTFILE 'Effort.sql';
48
49 --Descriptions
50 SELECT CONCAT('UPDATE ticket SET description = REPLACE(''',
51 REPLACE(REPLACE(Attachments.Content, '''', ''''''), '>', ''),
52 ''', ''\\'', '''') WHERE id = ',
53 Tickets.id,
54 ';')
55 FROM Tickets
56 INNER JOIN Transactions ON Transactions.ObjectId = Tickets.id AND Transactions.Type = 'Create'
57 INNER JOIN Attachments ON Attachments.TransactionId = Transactions.id AND Attachments.ContentType = 'text/plain' AND Attachments.Content <> '' AND Attachments.Content IS NOT NULL
58 INTO OUTFILE 'Descriptions.sql';
59
60 --Comments
61 SELECT CONCAT('INSERT INTO ticket_change (ticket, time, field, newvalue, author) VALUES (',
62 Tickets.id,
63 ', EXTRACT(EPOCH FROM ''',
64 Transactions.Created, '''::timestamp)',
65 ', ''comment'', REPLACE(''',
66 REPLACE(REPLACE(Attachments.Content, '''', ''''''), '>', ''),
67 ''', ''\\'', ''''), ''',
68 COALESCE(author.Name, ''),
69 ''');')
70 FROM Tickets
71 INNER JOIN Transactions ON Transactions.ObjectId = Tickets.id AND Transactions.Type = 'Comment'
72 INNER JOIN Attachments ON Attachments.TransactionId = Transactions.id AND Attachments.ContentType = 'text/plain' AND Attachments.Content <> '' AND Attachments.Content IS NOT NULL
73 INNER JOIN Users author ON author.id = Transactions.Creator
74 INTO OUTFILE 'Comments.sql';
75
76 --Change Owner
77 SELECT CONCAT('INSERT INTO ticket_change (ticket, time, field, oldvalue, newvalue, author) VALUES (',
78 Tickets.id,
79 ', EXTRACT(EPOCH FROM ''',
80 Transactions.Created, '''::timestamp)',
81 ', ''owner'', ''',
82 COALESCE(old.Name, ''),
83 ''', ''',
84 COALESCE(new.Name, ''),
85 ''', ''',
86 COALESCE(author.Name, ''),
87 ''');')
88 FROM Tickets
89 INNER JOIN Transactions ON Transactions.ObjectId = Tickets.id
90 INNER JOIN Users old ON old.id = Transactions.OldValue
91 INNER JOIN Users new ON new.id = Transactions.NewValue
92 INNER JOIN Users author ON author.id = Transactions.Creator
93 AND Field = 'Owner'
94 INTO OUTFILE 'Owner.sql';
95
96 --Change Status
97 SELECT CONCAT('INSERT INTO ticket_change (ticket, time, field, oldvalue, newvalue, author) VALUES (',
98 Tickets.id,
99 ', EXTRACT(EPOCH FROM ''',
100 Transactions.Created, '''::timestamp)',
101 ', ''current_status'', ''',
102 COALESCE(Transactions.OldValue, ''),
103 ''', ''',
104 COALESCE(Transactions.NewValue, ''),
105 ''', ''',
106 COALESCE(author.Name, ''),
107 ''');')
108 FROM Tickets
109 INNER JOIN Transactions ON Transactions.ObjectId = Tickets.id
110 INNER JOIN Users author ON author.id = Transactions.Creator
111 AND Field = 'Status'
112 INTO OUTFILE 'StatusChange.sql';
113
114
115 --Trac PostGreSQL Database
116
117 UPDATE ticket SET Owner = NULL WHERE Owner = 'Nobody';
118 UPDATE ticket SET Status = 'new' WHERE Owner IS NULL;
119 UPDATE ticket SET Status = 'assigned' WHERE OWNER IS NOT NULL;
120 UPDATE ticket SET Status = 'closed'
121 WHERE
122 ticket.id IN
123 (SELECT id FROM ticket INNER JOIN ticket_custom ON ticket_custom.ticket = ticket.id AND ticket_custom.name = 'current_status' AND ticket_custom.value IN ('resolved', 'rejected', 'deleted', 'Released'));
124 DELETE FROM ticket_change WHERE author = 'RT_System'
125 ALTER SEQUENCE ticket_id_seq RESTART WITH xxx;
126 UPDATE ticket SET changetime = (SELECT COALESCE(MAX(time), EXTRACT(EPOCH FROM NOW())) FROM ticket_change WHERE ticket = ticket.id)
127 UPDATE ticket SET reporter = owner where reporter is null;