Linux 上 postgresql 数据库迁移到 KingbaseES V8R6数据库

本文详细介绍了如何将Linux上的PostgreSQL数据库迁移至KingbaseESV8R6,包括安装必要的Postgres插件、创建相同用户、以及使用Navicat和SQL脚本进行数据迁移的方法。迁移过程中提到了pgGIS、FDW和UUID的支持情况,并指出了直接使用Navicat迁移的限制和SQL导出的步骤。

Linux 上 postgresql 数据库迁移到 KingbaseES V8R6数据库

前言

因为要数据库国产化,需要把postgres数据库的大小迁移到 KingbaseES V8R6数据库

一 准备工作

  1. KingbaseES V8R6数据库 的安装步骤

KingbaseES V8R6数据库 的安装步骤,之前已经讲过了,这里直接上链接:
https://blog.youkuaiyun.com/yang_z_1/article/details/123252832?spm=1001.2014.3001.5502

  1. 数据库的版本
    postgresql :11.5
    KingbaseES V8R6 企业版 pg版

二 KingbaseES V8R6 安装 postgres 的插件

因为postgres的插件非常好用,之前的业务也使用了,现在需要把数据库从postgres迁移到KingbaseES V8R6 上,必须确保你使用的的插件KingbaseES V8R6上面支持,或者有类似的才行。

1. 安装pggis,

pggis这个插件非常好用,相信大家也都用过,经过测试发现KingbaseES 支持,安装步骤
https://blog.youkuaiyun.com/yang_z_1/article/details/123289705?spm=1001.2014.3001.5502

测试

<think>嗯,用户的问题是关于人大金仓数据库V8R6版本中查询所有表名的方法。根据提供的引用信息,虽然没有直接提到查询表名的具体命令,但可以结合标准SQL和KingbaseES的特性来推导解决方案。 用户可能正在开发或维护适配人大金仓的系统(比如xxl-job),遇到了表结构相关的需求。引用[1]提到过账号和表名的关联,引用[2]中出现了模式的概念——这说明用户需要关注查询范围(比如特定模式下的表)。 考虑两个层面:首先是标准SQL方式。Kingbase作为PostgreSQL衍生品,应支持`information_schema.tables`视图。给出基础查询语句时需强调`table_schema`的条件筛选,因为业务场景中用户往往不需要系统表。其次是兼容性方案,类似PostgreSQL的`pg_tables`,这对习惯PG生态的用户更友好。 注意到引用[3]提到大小写敏感问题:Kingbase默认大小写不敏感但存储时可能保留大小写。这点必须提醒,否则用户可能疑惑为什么查询结果和预期不一致。比如创建了"MyTable"的用户用小写查询会失败,需要加双引号——这和引用[3]的初始化参数直接相关。 用户没有指定当前连接账号的权限级别,但引用[1][2]都涉及SYSTEM账号操作。安全起见,在注意事项里补充权限说明(引用[4]的安全策略修改也暗示权限控制的重要性),避免用户用普通账号查询时遗漏数据。 最后生成的问题拓展方向:既然用户查表名,后续可能会关注表结构详情(字段/索引),或是导入导出操作(呼应引用[2]的备份命令),这些都应该作为关联问题预判。 </think>在人大金仓数据库 KingbaseES V8R6 中查询所有表名,主要通过系统目录视图实现。以下是两种常用方法: ### 方法 1:使用 `information_schema.tables`(标准 SQL 推荐) ```sql SELECT table_schema AS "模式名", table_name AS "表名" FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_catalog = '当前数据库名' -- 替换为实际数据库名 AND table_schema NOT IN ('sys_catalog', 'information_schema', 'pg_catalog'); ``` * **要点说明** 1. `table_type='BASE TABLE'` 过滤掉视图等对象 2. `table_schema` 排除系统模式(根据实际需要调整排除项) 3. 替换 `table_catalog` 值为**实际数据库名** ### 方法 2:使用 `sys_class`(兼容 PostgreSQL 语法) ```sql SELECT n.nspname AS "模式名", c.relname AS "表名" FROM sys_class c JOIN sys_namespace n ON c.relnamespace = n.oid WHERE c.relkind = 'r' AND n.nspname NOT LIKE 'pg_%' AND n.nspname <> 'information_schema'; ``` * **要点说明** 1. `relkind='r'` 表示普通表 (`r=ordinary table`) 2. 通过 `sys_namespace` 关联获取模式名 3. 排除以 `pg_` 开头的系统模式 ### 注意事项 1. **大小写敏感** 若建表时使用了双引号(如 `CREATE TABLE "MyTable"`),查询时需用双引号包裹表名。可通过引用[3]的 `initdb --enable_ci` 参数初始化**大小写不敏感**的数据库[^3]。 2. **权限限制** 需确保当前账号有 `SELECT` 权限,建议使用引用[1]中类似 `xxl_job` 的专用账号[^1],避免系统账号操作风险。 3. **范围限定** 添加 `AND table_schema = '指定模式'` 或 `AND n.nspname = '指定模式'` 可限定特定模式下的表。 --- ### 相关拓展问题 1. 如何查询金仓数据库 V8R6 中某个表的字段结构? 2. 在金仓 V8R6 中如何备份特定模式下的所有表(参考引用[2]的 `sys_dump` 命令)[^2]? 3. 金仓数据库大小写敏感配置对数据迁移有什么影响? 4. 如何批量生成金仓数据库中所有表的统计信息? [^1]: 新建专用账号可避免权限问题,确保元数据查询的稳定性 [^2]: `sys_dump` 的 `-n` 参数可指定备份的模式范围 [^3]: 大小写敏感配置需在初始化时确定,修改需重新建
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yang_z_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值