
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