openGauss 数据库将磁盘表转换为 MOT

一、将磁盘表转换为 MOT 方法

磁盘表直接转换为 MOT 尚不能实现,这意味着尚不存在将基于磁盘的表转换为 MOT 的 ALTER TABLE 语句。目前 MOT 表也不支持 rename,create as select 以及 insert select(普通表)的操作。将基于磁盘的表转换为 MOT 方法,可以使用 gs_dump 工具导出数据,再使用 gs_restore 工具导入数据的方法。

步骤如下: 1.暂停应用程序活动。 2.使用 gs_dump 工具将表数据转储到磁盘的物理文件中。请确保使用 data only。 3.重命名原始基于磁盘的表。 4.创建同名同模式的 MOT。 5.使用 gs_restore 将磁盘文件的数据加载/恢复到数据库表中。 6.浏览或手动验证所有原始数据是否正确导入到新的 MOT 中。 7.恢复应用程序活动。

二、操作示例:将表 enmo.customer_t1 转换为 MOT 表

1.确认 MOT 表支持表 customer_t1 所有列的数据类型

enmo=> \d

List of relations

Schema | Name | Type | Owner | Storage

--------+--------------+-------+-------+----------------------------------

enmo | all_data | table | enmo | {orientation=row,compression=no}

enmo | customer_t1 | table | enmo | {orientation=row,compression=no}

enmo | cux_setting | table | enmo | {orientation=row,compression=no}

enmo | data_studio1 | table | enmo | {orientation=row,compression=no}

enmo | table2 | table | enmo | {orientation=row,compression=no}

public | table1 | table | enmo | {orientation=row,compression=no}

(6 rows)

enmo=> \d+ customer_t1

Table "enmo.customer_t1"

Column | Type | Modifiers | Storage | Stats target | Description

-----------------+-----------------------+-----------+----------+--------------+-------------

c_customer_sk | integer | | plain | |

c_customer_name | character varying(32) | | extended | |

Has OIDs: no

Options: orientation=row, compression=no

enmo=>

2.暂停表 customer_t1 相关的应用程序操作后,使用 gs_dump 命令导出表数据(仅数据):

$ gs_dump -U enmo -h ... -p 15400 enmo -a --table customer_t1 -F c -f /home/omm/dump/customer_t1_data_only.bak

Password:

gs_dump[port='15400'][enmo][2021-03-28 10:11:42]: dump database enmo successfully

gs_dump[port='15400'][enmo][2021-03-28 10:11:42]: total time: 8732 ms

3.重命名原表 customer_t1 为 customer

enmo=> alter table customer_t1 rename to customer;

ALTER TABLE

4.创建与原表相同数据格式的 MOT 表 customer_t1

--首先给enmo用于赋予创建和访问MOT(DDL、DML、SELECT)权限:

enmo=> GRANT USAGE ON FOREIGN SERVER mot_server TO enmo;

GRANT

--创建外部表

enmo=> CREATE foreign TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));

CREATE FOREIGN TABLE

Time: 9.408 ms

enmo=> \d+

List of relations

Schema | Name | Type | Owner | Size | Storage | Description

--------+--------------+---------------+-------+------------+----------------------------------+-------------

enmo | all_data | table | enmo | 8192 bytes | {orientation=row,compression=no} |

enmo | customer | table | enmo | 8192 bytes | {orientation=row,compression=no} |

enmo | customer_t1 | foreign table | enmo | 16 kB | |

enmo | cux_setting | table | enmo | 160 kB | {orientation=row,compression=no} |

enmo | data_studio1 | table | enmo | 8192 bytes | {orientation=row,compression=no} |

enmo | table2 | table | enmo | 8192 bytes | {orientation=row,compression=no} |

public | table1 | table | enmo | 8192 bytes | {orientation=row,compression=no} |

(7 rows)

enmo=> \d+ customer_t1

Foreign table "enmo.customer_t1"

Column | Type | Modifiers | FDW Options | Storage | Stats target | Description

-----------------+-----------------------+-----------+-------------+----------+--------------+-------------

c_customer_sk | integer | | | plain | |

c_customer_name | character varying(32) | | | extended | |

Server: mot_server

FDW permition: read/write

Has OIDs: no

enmo=> select * from customer_t1;

c_customer_sk | c_customer_name

---------------+-----------------

(0 rows)

Time: 0.782 ms

enmo=>

5.使用 gs_restore 将磁盘文件的数据加载/恢复到数据库表中

$ gs_restore -U enmo -h ... -p 15400 -d enmo /home/omm/dump/customer_t1_data_only.bak

Password:

start restore operation ...

table customer_t1 complete data imported !

Finish reading 3 SQL statements!

end restore operation ...

restore operation successful

total time: 3697 ms

6.浏览或手动验证所有原始数据是否正确导入到新的 MOT 中

enmo=> select * from customer_t1;

c_customer_sk | c_customer_name

---------------+-----------------

0 | data 0

2 | data 2

1 | new Data

(3 rows)

Time: 0.587 ms

enmo=>

openGauss数据库将磁盘表转换为MOT的更多相关文章

  1. MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句

    查询所有数据库占用磁盘空间大小的SQL语句: ,),' MB') as data_size, concat(,),'MB') as index_size from information_schema ...

  2. 用java语言将数据库中的数据表转换为xml文件的通用程序(细化)

    转自:https://www.cnblogs.com/wudage/p/7650685.html 总是在网络上copy别人的源代码,今天我也贴出自己今天写的源码,相信这个程序会对大家在平时的工作中需要 ...

  3. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  4. wordpress数据库优化wp_posts表 OPTIMIZE

    wordpress数据库优化wp_posts表 对 MySQL 数据记录进行插入.更新或删除时,会占有不同大小的空间,记录就会变成碎片,且留下空闲的空间.就像具有碎片的磁盘,会降低性能,需要整理,因此 ...

  5. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  6. MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作(转)

    MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”. 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的 ...

  7. c#创建access数据库和数据表

      由于在程序中使用了ADOX,所以先要在解决方案中引用之,方法如下: 解决方案资源管理器(项目名称)-->(右键)添加引用-->COM--> Microsoft ADO Ext. ...

  8. oracle下的数据库实例、表空间、用户及其表的区分

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  9. Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...

  10. Oracle数据表转换为Shapefile(二)

    在上一篇博文<Oracle数据表转换为Shapefile(一)>中详细描述了一种基于Oracle数据表生产Shapefile的技术方法,本文同样以详细图解的方式描述一种更便捷的方法来完成同 ...

随机推荐

  1. VC-MFC 登陆界面 + 数据库账号+密码

    1 // DlgUser.cpp : 实现文件 2 // 3 4 #include "stdafx.h" 5 #include "Login.h" 6 #inc ...

  2. C++ //STL---常用算法 //常用遍历 for_each //transform

    1 //STL---常用算法 2 //常用遍历 for_each 3 //transform 4 #include<iostream> 5 #include<string> 6 ...

  3. Learning by teaching --- 费曼学习法

    世界上存在成千上万种学习法,如果上天只让我掌握一种,那一定就是"费曼学习法". 介绍 费曼学习法是由诺贝尔物理学奖获得者理查德·费曼提出的一种学习方法,其核心思想是将所学内容用自己 ...

  4. 排查 dotNET Core 程序内存暴涨的问题

    0. 问题 新版本上线之后,发现内存猛涨,入站流量猛增,不清楚具体原因,部分接口提示 OOM 异常,随后 Pod 直接崩溃无限重启. 1. 准备 Pod 已经接入了 NewRelic 和 Graylo ...

  5. .NET开源的两款第三方登录整合库

    前言 我相信做开发的同学应该都对接过各种各样的第三方平台的登录授权,来获取用户信息(如:微信登录.支付宝登录.QQ登录.GitHub登录等等).今天大姚分享两款.NET开源的第三方登录整合库. MrH ...

  6. 2FA双因素认证 - TOTP详解

    主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在2FA双因素认证中,TOTP可谓是标准化程度最高的技术方案.它 ...

  7. linux 系统目录详解

    tmpfs 的优势: 1,动态文件系统的大小. 2,tmpfs 的另一个主要的好处是它闪电般的速度.因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的. 3,tmpfs 数 ...

  8. Java 学习分享

    建议语言入门可以先看看视频,学习网站可以是github,极客时间,infoQ等,然后去看书深入研究学习.学习最有效的方式一定是自己动手写代码,而不是看别人的代码,自己下载Intelli Idea多敲敲 ...

  9. SVN 提交文件报错:svn: E155015: Aborting commit:

    svn 提交文件报错: svn: E155015: Commit failed (details follow): svn: E155015: Aborting commit: '文件名称' rema ...

  10. 【虚拟仿真】3DCAT虚拟仿真在化工安全方面的应用

    随着中国经济的快速发展,石油化工企业的生产事故也在频繁发生.国家目前对生产安全的重视程度提高到前所未有的高度.企业也在安全管理上做了许多工作,如:进行安全培训,制定安全手册等.但这些方式的效果不明显, ...