mysql - 将带有月份名称的mysql数据迁移到新结构
问题描述
CREATE TABLE `monthly1` (
`id` int(255) NOT NULL,
`year` int(255) NOT NULL,
`stat_id` varchar(255) NOT NULL,
`cat_id` varchar(255) NOT NULL,
`january` varchar(255) NOT NULL,
`february` varchar(255) NOT NULL,
`march` varchar(255) NOT NULL,
`april` varchar(255) NOT NULL,
`may` varchar(255) NOT NULL,
`june` varchar(255) NOT NULL,
`july` varchar(255) NOT NULL,
`august` varchar(255) NOT NULL,
`september` varchar(255) NOT NULL,
`october` varchar(255) NOT NULL,
`november` varchar(255) NOT NULL,
`december` varchar(255) NOT NULL,
);
嗨,我有一个现有的 mysql 数据,其结构类似于上面,我想将数据迁移到一个新结构,如下面的结构
CREATE TABLE `monthly2` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`year` int(255) NOT NULL,
`stat_id` varchar(255) NOT NULL,
`cat_id` int(11) NOT NULL,
`monthName` varchar(255) NOT NULL,
`monthlydata` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
如何正确创建插入查询来执行此操作..我尝试了下面的查询,但是如何将月份名称设置为月份名称(一月)而不是一月数据?
INSERT INTO `monthly2` (`year`, `stat_id`, `cat_id`, `monthName`, `monthlydata`)
select `year`,`stat_id`,`cat_id`, `january`, `january`
from `monthly1 WHERE year >= '2010' AND year < '2018'
解决方案
首先,将表中的年份列设为每月 1。
使用以下查询在另一个表中插入记录:-
INSERT INTO
monthly2
(SELECT `id`,`year`,`stat_id`,`cat_id`, 'january', `january` FROM monthly1
WHERE year >= 2010 AND year < 2018);
供参考
我必须删除:-
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
为测试。
推荐阅读
- java - 仅等待响应时Java异步客户端的优势?
- python-3.x - 如何使用 python 从 wiki 获取具有特定语言的文章?
- python - 如何将文件名改成整数,以便后面创建的文件用更大的数字命名?
- c# - 如何在 C# 中将字符串变量转换为双精度
- reactjs - 开玩笑 Create-React-App 中的意外令牌
- c# - 如何在 Unity 2D 中的 if 语句中检查碰撞
- linux - Tomcat 9 在终端 [ubuntu 18.04] 上启动,但未在浏览器中加载
- swift - SwiftUI 列出空状态视图/修改器
- python - Python中的张量流eval()函数
- node.js - Chart.js 误读标签和轴的数组