mysql - 如何创建 MySQL 表的备份,其中原始表具有其中一列的“设置”数据类型?
问题描述
在更新原始表中的一些数据之前,我需要在 MySQL 中创建一个表备份。服务器正在运行 MySQL 5.6。计划是创建一个新的空白表并使用INSERT INTO ... SELECT ...
我曾经SHOW CREATE TABLE Organization;
得到创建新空白Organization_backup
表所需的语句。下面是原始表的示例表结构。
MySQL [db]> describe Organization;
+------------------+-------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------------------------------------+------+-----+---------+-------+
| ID | char(6) | NO | PRI | NULL | |
| Plans | set('plan1','plan2','plan3') | NO | | NULL | |
| CreatedTS | datetime | NO | | NULL | |
+------------------+-------------------------------------------------+------+-----+---------+-------+
我的插入语句非常简单:
INSERT INTO Organization_backup (ID, Plans, CreatedTS)
SELECT ID, Plans, CreatedTS FROM Organization;
但是,当我随后比较不匹配数据的表时,我可以看到 Plans 值不匹配。特别是,一个组织可以是多个计划的一部分,并且我相信生成的具有逗号分隔值的数据子集在将数据插入备份表时会导致问题。
例子SELECT ID,Plans,CreatedTS FROM Organization where ID = 'ORG1';
结果:
+---------+----------------------+---------------------+
| ID | Plans | CreatedTS |
+---------+----------------------+---------------------+
| ORG1 | plan1,plan2,plan3 | 2017-05-05 14:26:25 |
+---------+----------------------+---------------------+
与示例相比SELECT ID,Plans,CreatedTS FROM Organization_backup where ID = 'ORG1';
结果:
+---------+----------------------+---------------------+
| ID | Plans | CreatedTS |
+---------+----------------------+---------------------+
| ORG1 | plan2,plan3 | 2017-05-05 14:26:25 |
+---------+----------------------+---------------------+
我无法弄清楚为什么没有正确插入集合中的第一个计划。
EDIT1: 对于那些询问的人,是的,除了名称之外,这两个表是相同的。
MySQL [db]> describe Organization_backup;
+------------------+-------------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------------------------------------+------+-----+---------+-------+
| ID | char(6) | NO | PRI | NULL | |
| Plans | set('plan1','plan2','plan3') | NO | | NULL | |
| CreatedTS | datetime | NO | | NULL | |
+------------------+-------------------------------------------------+------+-----+---------+-------+
解决方案
试试这个:
CREATE TABLE Organization_backup SELECT * FROM Organization;
推荐阅读
- django - 根据用户Django的权限制作动态侧边栏
- python - 如何使用 BAC0 设置每周计划
- function - 此 LISP 代码中的递归和控制结构与普通函数和控制结构有何不同?
- javascript - 如何在jquery中找到第一行第一个锚标记?
- c++ - 如何使用指针从双端队列中删除特定元素
- android - pubspec.yaml 中版本升级时出错
- javascript - Javascript 全局格式货币
- tableau-api - 在 Tableau 中滚动 7 天期间
- javascript - 如何解决这个问题,你的代码在这里
- typescript - typescript 类型别名的默认值