migration: Create a script to migrate database from 0.8 to 0.9

This commit is contained in:
Olivier PEREZ 2014-12-30 18:15:29 +01:00
parent d37200addd
commit ca00c4953c
2 changed files with 149 additions and 14 deletions

136
from_0-8_to_0-9.sql Normal file
View File

@ -0,0 +1,136 @@
-- --------------------------------------------------------
--
-- Table structure `poll`
--
CREATE TABLE IF NOT EXISTS `poll` (
`id` CHAR(16) NOT NULL,
`admin_id` CHAR(24) NOT NULL,
`title` TEXT NOT NULL,
`description` TEXT,
`admin_name` VARCHAR(64) DEFAULT NULL,
`admin_mail` VARCHAR(128) DEFAULT NULL,
`creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`end_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`format` VARCHAR(1) DEFAULT NULL,
`editable` TINYINT(1) DEFAULT '0',
`receiveNewVotes` TINYINT(1) DEFAULT '0',
`active` TINYINT(1) DEFAULT '1',
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- --------------------------------------------------------
--
-- Table structure `slot`
--
CREATE TABLE IF NOT EXISTS `slot` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`poll_id` CHAR(16) NOT NULL,
`title` TEXT,
`moments` TEXT,
PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- --------------------------------------------------------
--
-- Table structure `comment`
--
CREATE TABLE IF NOT EXISTS `comment` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`poll_id` CHAR(16) NOT NULL,
`name` TEXT,
`comment` TEXT NOT NULL,
PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- --------------------------------------------------------
--
-- Table structure `vote`
--
CREATE TABLE IF NOT EXISTS `vote` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`poll_id` CHAR(16) NOT NULL,
`name` VARCHAR(64) NOT NULL,
`choices` TEXT NOT NULL,
PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- --------------------------------------------------------
--
-- Migrate data from `sondage` to `poll`
--
INSERT INTO `poll`
(`id`, `admin_id`, `title`, `description`, `admin_name`, `admin_mail`, `creation_date`, `end_date`, `format`, `editable`, `receiveNewVotes`, `active`)
SELECT
`id_sondage`,
`id_sondage_admin`,
`titre`,
`commentaires`,
`nom_admin`,
`mail_admin`,
`titre`,
`date_creation`,
`date_fin`,
SUBSTR(`format`, 1, 1) AS `format`,
CASE SUBSTR(`format`, 2, 1)
WHEN '+' THEN 1
ELSE 0 END AS `editable`,
`mailsonde`,
CASE SUBSTR(`format`, 2, 1)
WHEN '-' THEN 0
ELSE 1 END AS `active`
FROM sondage;
-- --------------------------------------------------------
--
-- Migrate data from `sujet_studs` to `slot`
--
-- TODO Migrate this, is not so simple
/*INSERT INTO `slot`
(`poll_id`, `title`, `moments`)
SELECT `id_sondage`,
FROM `user_studs`;*/
-- --------------------------------------------------------
--
-- Migrate data from `comments` to `comment`
--
INSERT INTO `comment`
(`poll_id`, `name`, `comment`)
SELECT `id_sondage`, `usercomment`, `comment`
FROM `comments`;
-- --------------------------------------------------------
--
-- Migrate data from `user_studs` to `vote`
--
INSERT INTO `vote`
(`poll_id`, `name`, `choices`)
SELECT `id_sondage`, `nom`, REPLACE(REPLACE(REPLACE(`reponses`, '1', 'X'), '2', '1'), 'X', 2)
FROM `user_studs`;

View File

@ -19,8 +19,8 @@ CREATE TABLE IF NOT EXISTS `poll` (
`active` TINYINT(1) DEFAULT '1', `active` TINYINT(1) DEFAULT '1',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) )
ENGINE =InnoDB ENGINE = InnoDB
DEFAULT CHARSET =utf8; DEFAULT CHARSET = utf8;
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -36,8 +36,8 @@ CREATE TABLE IF NOT EXISTS `slot` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`) KEY `poll_id` (`poll_id`)
) )
ENGINE =InnoDB ENGINE = InnoDB
DEFAULT CHARSET =utf8; DEFAULT CHARSET = utf8;
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -53,8 +53,8 @@ CREATE TABLE IF NOT EXISTS `comment` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`) KEY `poll_id` (`poll_id`)
) )
ENGINE =InnoDB ENGINE = InnoDB
DEFAULT CHARSET =utf8; DEFAULT CHARSET = utf8;
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -70,9 +70,8 @@ CREATE TABLE IF NOT EXISTS `vote` (
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `poll_id` (`poll_id`) KEY `poll_id` (`poll_id`)
) )
ENGINE =InnoDB ENGINE = InnoDB
DEFAULT CHARSET =utf8 DEFAULT CHARSET = utf8;
AUTO_INCREMENT =160284;
-- --
@ -101,13 +100,13 @@ INSERT INTO `slot` (`poll_id`, `title`, `moments`) VALUES
INSERT INTO `vote` (`name`, `poll_id`, `choices`) VALUES INSERT INTO `vote` (`name`, `poll_id`, `choices`) VALUES
('marcel', 'aqg259dth55iuhwm', '02202222'), ('marcel', 'aqg259dth55iuhwm', '02202222'),
('paul', 'aqg259dth55iuhwm', '20220202'), ('paul', 'aqg259dth55iuhwm', '20220202'),
('sophie', 'aqg259dth55iuhwm', '22202200'), ('sophie', 'aqg259dth55iuhwm', '22202200'),
('barack', 'aqg259dth55iuhwm', '02200000'), ('barack', 'aqg259dth55iuhwm', '02200000'),
('takashi','aqg259dth55iuhwm', '00002202'), ('takashi', 'aqg259dth55iuhwm', '00002202'),
('albert', 'aqg259dth55iuhwm', '20202200'), ('albert', 'aqg259dth55iuhwm', '20202200'),
('alfred', 'aqg259dth55iuhwm', '02200200'), ('alfred', 'aqg259dth55iuhwm', '02200200'),
('marcs', 'aqg259dth55iuhwm', '02000020'), ('marcs', 'aqg259dth55iuhwm', '02000020'),
('laure', 'aqg259dth55iuhwm', '00220000'), ('laure', 'aqg259dth55iuhwm', '00220000'),
('benda', 'aqg259dth55iuhwm', '22022022'), ('benda', 'aqg259dth55iuhwm', '22022022'),
('albert', 'aqg259dth55iuhwm', '22222200'); ('albert', 'aqg259dth55iuhwm', '22222200');