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. STL-priority_queue模拟实现

    #include<deque> //测试用 #include<vector>//测试用 #include"9Date.h"//测试用 #include< ...

  2. Java 异常处理(2) : 异常处理的方式二:throws + 异常类型

    1 package com.bytezero.throwable; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 impor ...

  3. window.open代理劫持

    window.open = new Proxy(window.open, { apply(target, ctx, args) { if (hasAuth(args[0])) { return tar ...

  4. Zabbix与乐维监控对比分析(五)——可视化篇

    前面我们详细介绍了Zabbix与乐维监控的架构与性能.Agent管理.自动发现.权限管理.对象管理.告警管理方面的对比分析,相信大家对二者的对比分析有了相对深入的了解,接下来我们将对二者的可视化功能进 ...

  5. IDEA导入项目jar包=来自本地仓库-一直报红线的解决办法

    一.问题由来 现在开发的Java项目全部都是再内网进行开发,和互联网是完全物理隔绝的,所以在最开始配置IDEA的时候,项目中需要导入的Jar包 都是从本地仓库中进行导入,在maven的配置文件里面配置 ...

  6. SpringMVC简介 & 原理

    特点 1.轻量级,简单易学 2.高效,基于请求响应的MVC框架 3.与Spring兼容性好,与之无缝接合(就是它的一部分) 4.约定优于配置(maven) 5.功能强大:支持RESTful  数据验证 ...

  7. 魅族16T屏幕尺子

  8. python数组概念和实例解析

    一 概念 如果我们需要一个只包含数字的列表,那么array.array比list更高效.数组支持所有跟可变序列有关的操作,包括.pop,.insert和.extend. 另外,数组还提供从文件读取和存 ...

  9. 如何让AR物体更真实?

    在增强现实中,除了虚拟物体本身的模型材质等因素,影响物体真实性的主要是光照.反射.阴影.接下来3DCAT实时渲染云平台将带您从这三个方面探索如何让AR物体更真实! AR光估测 要让一个虚拟物体很好的融 ...

  10. APT案例之点击事件

    目录介绍 01.创建项目步骤 1.1 项目搭建 1.2 项目功能 02.自定义注解 03.创建Processor 04.compiler配置文件 05.编译jar 06.如何使用 07.编译生成代码 ...