Created
September 17, 2019 09:34
-
-
Save englandbaron/db0fa3d95e276e31102ab3b36d0489a6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- MySQL dump 10.17 Distrib 10.3.18-MariaDB, for debian-linux-gnu (x86_64) | |
-- | |
-- Host: localhost Database: work | |
-- ------------------------------------------------------ | |
-- Server version 10.3.18-MariaDB-1:10.3.18+maria~bionic-log | |
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; | |
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; | |
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; | |
/*!40101 SET NAMES utf8mb4 */; | |
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; | |
/*!40103 SET TIME_ZONE='+00:00' */; | |
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; | |
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; | |
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; | |
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; | |
-- | |
-- Current Database: `work` | |
-- | |
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `work` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; | |
USE `work`; | |
-- | |
-- Table structure for table `db1` | |
-- | |
DROP TABLE IF EXISTS `db1`; | |
/*!40101 SET @saved_cs_client = @@character_set_client */; | |
/*!40101 SET character_set_client = utf8 */; | |
CREATE TABLE `db1` ( | |
`USERNAME` varchar(30) NOT NULL, | |
`MONEY` varchar(100) NOT NULL, | |
PRIMARY KEY (`USERNAME`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; | |
/*!40101 SET character_set_client = @saved_cs_client */; | |
-- | |
-- Dumping data for table `db1` | |
-- | |
LOCK TABLES `db1` WRITE; | |
/*!40000 ALTER TABLE `db1` DISABLE KEYS */; | |
INSERT INTO `db1` VALUES ('zetian','[4,100] - [5,30] - [11,70]'); | |
/*!40000 ALTER TABLE `db1` ENABLE KEYS */; | |
UNLOCK TABLES; | |
-- | |
-- Table structure for table `db2` | |
-- | |
DROP TABLE IF EXISTS `db2`; | |
/*!40101 SET @saved_cs_client = @@character_set_client */; | |
/*!40101 SET character_set_client = utf8 */; | |
CREATE TABLE `db2` ( | |
`username` varchar(100) NOT NULL, | |
`goods` varchar(100) NOT NULL, | |
`money` varchar(100) NOT NULL | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; | |
/*!40101 SET character_set_client = @saved_cs_client */; | |
-- | |
-- Dumping data for table `db2` | |
-- | |
LOCK TABLES `db2` WRITE; | |
/*!40000 ALTER TABLE `db2` DISABLE KEYS */; | |
INSERT INTO `db2` VALUES ('zetian','4','100'); | |
/*!40000 ALTER TABLE `db2` ENABLE KEYS */; | |
UNLOCK TABLES; | |
-- | |
-- Table structure for table `test_country` | |
-- | |
DROP TABLE IF EXISTS `test_country`; | |
/*!40101 SET @saved_cs_client = @@character_set_client */; | |
/*!40101 SET character_set_client = utf8 */; | |
CREATE TABLE `test_country` ( | |
`country_code` char(3) NOT NULL COMMENT 'numeric', | |
`country_name` varchar(100) NOT NULL COMMENT 'ISO 3166-1 country name', | |
`alpha3` char(3) NOT NULL COMMENT 'alpha-3', | |
`alpha2` char(2) NOT NULL COMMENT 'alpha-2', | |
`division` varchar(100) NOT NULL COMMENT 'country division', | |
PRIMARY KEY (`country_code`), | |
UNIQUE KEY `uq1` (`alpha3`), | |
UNIQUE KEY `uq2` (`alpha2`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='ISO 3166-1 country'; | |
/*!40101 SET character_set_client = @saved_cs_client */; | |
-- | |
-- Dumping data for table `test_country` | |
-- | |
LOCK TABLES `test_country` WRITE; | |
/*!40000 ALTER TABLE `test_country` DISABLE KEYS */; | |
/*!40000 ALTER TABLE `test_country` ENABLE KEYS */; | |
UNLOCK TABLES; | |
-- | |
-- Dumping routines for database 'work' | |
-- | |
/*!50003 DROP FUNCTION IF EXISTS `SPLIT_STR` */; | |
/*!50003 SET @saved_cs_client = @@character_set_client */ ; | |
/*!50003 SET @saved_cs_results = @@character_set_results */ ; | |
/*!50003 SET @saved_col_connection = @@collation_connection */ ; | |
/*!50003 SET character_set_client = utf8mb4 */ ; | |
/*!50003 SET character_set_results = utf8mb4 */ ; | |
/*!50003 SET collation_connection = utf8mb4_general_ci */ ; | |
/*!50003 SET @saved_sql_mode = @@sql_mode */ ; | |
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; | |
DELIMITER ;; | |
CREATE DEFINER=`root`@`%` FUNCTION `SPLIT_STR`( | |
x VARCHAR(255), | |
delim VARCHAR(12), | |
pos INT | |
) RETURNS varchar(255) CHARSET utf8mb4 | |
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), | |
CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), | |
delim, "") ;; | |
DELIMITER ; | |
/*!50003 SET sql_mode = @saved_sql_mode */ ; | |
/*!50003 SET character_set_client = @saved_cs_client */ ; | |
/*!50003 SET character_set_results = @saved_cs_results */ ; | |
/*!50003 SET collation_connection = @saved_col_connection */ ; | |
/*!50003 DROP PROCEDURE IF EXISTS `TABLEMIGRATION` */; | |
/*!50003 SET @saved_cs_client = @@character_set_client */ ; | |
/*!50003 SET @saved_cs_results = @@character_set_results */ ; | |
/*!50003 SET @saved_col_connection = @@collation_connection */ ; | |
/*!50003 SET character_set_client = utf8mb4 */ ; | |
/*!50003 SET character_set_results = utf8mb4 */ ; | |
/*!50003 SET collation_connection = utf8mb4_general_ci */ ; | |
/*!50003 SET @saved_sql_mode = @@sql_mode */ ; | |
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; | |
DELIMITER ;; | |
CREATE DEFINER=`root`@`%` PROCEDURE `TABLEMIGRATION`(in name varchar(30)) | |
begin | |
declare _money VARCHAR(30); | |
declare part1 VARCHAR(30); | |
declare part2 VARCHAR(30); | |
declare part3 VARCHAR(30); | |
select MONEY into _money from db1 where USERNAME = name; | |
select _money; | |
select split_str(_money,' - ',1) into part1; | |
select split_str(_money,' - ',2) into part2; | |
select split_str(_money,' - ',3) into part3; | |
set part1 = replace(replace(part1,'[',''),']',''); | |
set part2 = replace(replace(part2,'[',''),']',''); | |
set part3 = replace(replace(part3,'[',''),']',''); | |
-- select concat("|",part1,"|"); | |
-- select concat("|",part2,"|"); | |
-- select concat("|",part3,"|"); | |
INSERT INTO `work`.db2 (username,goods,money) VALUES (name,split_str(part1,',',1),split_str(part1,',',2)); | |
INSERT INTO `work`.db2 (username,goods,money) VALUES (name,split_str(part2,',',1),split_str(part2,',',2)); | |
INSERT INTO `work`.db2 (username,goods,money) VALUES (name,split_str(part3,',',1),split_str(part3,',',2)); | |
end ;; | |
DELIMITER ; | |
/*!50003 SET sql_mode = @saved_sql_mode */ ; | |
/*!50003 SET character_set_client = @saved_cs_client */ ; | |
/*!50003 SET character_set_results = @saved_cs_results */ ; | |
/*!50003 SET collation_connection = @saved_col_connection */ ; | |
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; | |
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; | |
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; | |
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; | |
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; | |
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; | |
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; | |
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; | |
-- Dump completed on 2019-09-17 9:26:22 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
问题:完成业务表的升级,将db1中的MONEY实现物品的分类并存储到db2新表中 | |
db1: | |
USERNAME|MONEY | | |
--------|--------------------------| | |
zetian |[4,100] - [5,30] - [11,70]| | |
db2: | |
username|goods|money| | |
--------|-----|-----| | |
zetian |4 |100 | | |
zetian |5 |30 | | |
zetian |11 |70 | | |
工具函数:SPLIT_STR | |
DELIMITER ;; | |
CREATE DEFINER=`root`@`%` FUNCTION `SPLIT_STR`( | |
x VARCHAR(255), | |
delim VARCHAR(12), | |
pos INT | |
) RETURNS varchar(255) CHARSET utf8mb4 | |
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), | |
CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), | |
delim, "") ;; | |
DELIMITER ; | |
例子: | |
MariaDB [work]> select SPLIT_STR("aaa,,bbb,,ccc",",,",2); | |
+----------------------------------+ | |
| SPLIT_STR("aaa,,bbb,ccc",",,",2) | | |
+----------------------------------+ | |
| bbb | | |
+----------------------------------+ | |
1 row in set (0.001 sec) | |
存储过程:TABLEMIGRATION | |
DELIMITER ;; | |
CREATE DEFINER=`root`@`%` PROCEDURE `TABLEMIGRATION`(in name varchar(30)) | |
begin | |
declare _money VARCHAR(30); | |
declare part1 VARCHAR(30); | |
declare part2 VARCHAR(30); | |
declare part3 VARCHAR(30); | |
select MONEY into _money from db1 where USERNAME = name; | |
select _money; | |
select split_str(_money,' - ',1) into part1; | |
select split_str(_money,' - ',2) into part2; | |
select split_str(_money,' - ',3) into part3; | |
set part1 = replace(replace(part1,'[',''),']',''); | |
set part2 = replace(replace(part2,'[',''),']',''); | |
set part3 = replace(replace(part3,'[',''),']',''); | |
-- select concat("|",part1,"|"); | |
-- select concat("|",part2,"|"); | |
-- select concat("|",part3,"|"); | |
INSERT INTO `work`.db2 (username,goods,money) VALUES (name,split_str(part1,',',1),split_str(part1,',',2)); | |
INSERT INTO `work`.db2 (username,goods,money) VALUES (name,split_str(part2,',',1),split_str(part2,',',2)); | |
INSERT INTO `work`.db2 (username,goods,money) VALUES (name,split_str(part3,',',1),split_str(part3,',',2)); | |
end ;; | |
DELIMITER ; | |
例子: | |
MariaDB [work]> call TABLEMIGRATION('zetian'); | |
+----------------------------+ | |
| _money | | |
+----------------------------+ | |
| [4,100] - [5,30] - [11,70] | | |
+----------------------------+ | |
1 row in set (0.001 sec) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment