CREATE TABLE IF NOT EXISTS dc ( id INTEGER(11) AUTO_INCREMENT NOT NULL, code VARCHAR(100) NOT NULL, type VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, result VARCHAR(1) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, m_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) );
#! / usr / bin / env bash username = "habr" password = "habr" database = "mydatabase" cd COMMON mysql --user $ {username} --password = $ {password} -D $ {database} <dc.sql if [$? -eq "1"]; then exit $? fi echo '' echo '>>> TABLES' echo '' cd TABLE FILES = * for f in $ {FILES} do scriptName = `expr" $ f ": '\ ([a-z _] * \)'` var = $ (mysql --user $ {username} --password = $ {password} -D $ {database} <<< select count (*) from information_schema.tables as t where t.TABLE_NAME = '$ {scriptName } '"-s) if [$ {var} -ne '1']; then echo "Processing $ f file ..." mysql --user $ {username} --password = $ {password} -D $ {database} <$ {f} mysql --user $ {username} --password = $ {password} -D $ {database} <<< INSERT INTO dc (code, type, result) values ​​('$ {f}', 'CREATE TABLE', "$?") if [$? -ne 0]; then exit $? fi else echo '--- Skip' $ {f} '---' fi done echo '' echo '>>> FOREIGN KEYS' echo '' cd ../F_KEY FILES = * for f in $ {FILES} do scriptName = `expr" $ f ": '\ ([a-z_A-Z] * \)'` var = $ (mysql --user $ {username} --password = $ {password} -D $ {database} <<< "select count (*) from information_schema.table_constraints as t where t.constraint_name = '$ {scriptName } '"-s) if [$ {var} -ne '1']; then echo "Processing $ f file ..." mysql --user $ {username} --password = $ {password} -D $ {database} <$ {f} mysql --user $ {username} --password = $ {password} -D $ {database} <<< INSERT INTO dc (code, type, result) values ​​('$ {f}', 'CREATE FK', "$?") if [$? -ne 0]; then exit $? fi else echo '--- Skip' $ {f} '---' fi done echo '' echo '' echo '>>> LOAD DATA SCRIPTS' echo '' cd ../DATA FILES = * for f in $ {FILES} do scriptName = `expr" $ f ": '\ ([a-z0-9] * \)'` var = $ (mysql --user $ {username} --password = $ {password} -D $ {database} <<< "select count (*) from $ {database} .dc as t where t.code = ' $ {f} 'and result =' 0 '"-s) if [$ {var} -ne '1']; then echo "Processing $ f file ..." mysql --user $ {username} --password = $ {password} -D $ {database} <$ {f} mysql --user $ {username} --password = $ {password} -D $ {database} <<< INSERT INTO dc (code, type, result) values ​​('$ {f}', 'LOAD DATA', "$?") if [$? -ne 0]; then exit $? fi else echo '--- Skip' $ {f} '---' fi done echo '' echo '' echo '>>> LOAD TRIGGERS' echo '' cd ../TRIGGER FILES = * for f in $ {FILES} do scriptName = `expr" $ f ": '\ ([a-z_0-9] * \)'` var = $ (mysql --user $ {username} --password = $ {password} -D $ {database} <<< "select count (*) from information_schema.triggers as t where t.trigger_name = '$ {f } '"-s) if [$ {var} -ne '1']; then echo "Processing $ f file ..." mysql --user $ {username} --password = $ {password} -D $ {database} <$ {f} mysql --user $ {username} --password = $ {password} -D $ {database} <<< INSERT INTO dc (code, type, result) values ​​('$ {f}', 'LOAD TRIGGER', "$?") if [$? -ne 0]; then exit $? fi else echo '--- Skip' $ {f} '---' fi done echo '' exit $?
-- INSERT INTO ds.reso_type (name, description) VALUES ('', ' , '); INSERT INTO ds.reso_type (name, description) VALUES ('', ' , '); INSERT INTO ds.reso_type (name, description) VALUES ('', ' , '); # noinspection SqlResolve INSERT INTO ds.human_type (name, description) VALUES ("", " ?");
INSERT INTO reso_speed (resoId, popId, speed) VALUES ( (SELECT ht.id FROM human_type ht WHERE ht.name = ''), (SELECT rt.id FROM reso_type rt WHERE rt.name = ''), 30);
# tasktype DELIMITER // CREATE FUNCTION installTaskType(name VARCHAR(50), title VARCHAR(100), groupId INT(11), description VARCHAR(1000)) RETURNS int(11) BEGIN SELECT count(id) into @c from tasktype as t where t.name = name COLLATE 'utf8_unicode_ci'; if (@c = 0) THEN insert into `tasktype`(`name`,`title`,`group_id`,`description`) VALUES (name, title, groupId, description); RETURN LAST_INSERT_ID(); END IF; SELECT id INTO @taskTypeId FROM tasktype as t where t.name = name COLLATE 'utf8_unicode_ci'; RETURN @taskTypeId; END // DELIMITER ; # taskgroup DELIMITER // CREATE FUNCTION installTaskGroup(name VARCHAR(255)) RETURNS INT(11) BEGIN SELECT count(id) into @c FROM taskgroup as t where t.name = name COLLATE 'utf8_unicode_ci'; if (@c = 0) THEN INSERT INTO taskgroup (`name`) VALUES (name); RETURN LAST_INSERT_ID(); END IF; SELECT id INTO @groupId FROM taskgroup as t WHERE t.name = name COLLATE 'utf8_unicode_ci'; RETURN @groupId; END // DELIMITER ;
SELECT installTaskGroup('TEST_GROUP') into @groupId; SELECT installTaskType('TEST_TASK', ' HABR', @groupId, '');
Source: https://habr.com/ru/post/318904/
All Articles