GBase 8a
适配迁移
问答

GBaseMigrationToolkit工具Oracle迁移至Gbase8a问题

发表于2026-06-18 11:01:2445次浏览8个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3.28.12-redhat7-x86_64

【操作系统】:centos 7

【CPU】:

【问题描述】*:Oracle数据表建表语句:

CREATE TABLE employees (    emp_id        NUMBER PRIMARY KEY,    first_name    VARCHAR2(50),    last_name     VARCHAR2(50),    email         VARCHAR2(100) UNIQUE,    hire_date     DATE DEFAULT SYSDATE,    salary        NUMBER(8,2),    dept_id       NUMBER,    CONSTRAINT fk_dept FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );

其中hire_date给了SYSDATE默认值,但是Gbase8a不支持,直接使用Migration迁移报错,报错代码“com.gbase.jdbc.exceptions.jdbc4.GBaseSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your GBase server version for the right syntax to use near 'SYSDATE
”。我在Gbase8a中创建了employees映射表,将sysdate改为了current_timestamp,然后在迁移设置中将迁移表结构取消勾选,但是报同样的错误,除了修改Oracle表结构,还有别的解决方法吗?

悬赏:20吉币
回答被发帖人采纳后可获得赏金

评论

登录后才可以发表评论
用户头像
小鱼不吐泡泡发表于 1个月前
迁移工具要是不支持的话,只能导出源表数据为csv或者txt,然后load data infile导入8a了
BYRAN发表于 1个月前
问题核心
GBase 8a 确实不支持为 DATETIME 类型设置默认值,需要改为 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,且每个表只支持一个自动更新的 TIMESTAMP 字段 。
方法是: 跳过 DDL 迁移,手动建表
在 Migration 工具的迁移设置中,仅迁移数据,不迁移表结构。
在 GBase 8a 中先手动创建映射表,确保 hire_date 的定义符合 GBase 8a 语法,例如:
CREATE TABLE employees (
emp_id BIGINT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100) UNIQUE,
hire_date TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, -- 调整定义
salary DECIMAL(8,2),
dept_id INT
);
然后进行纯数据迁移。
最佳回答
gbase0001发表于 1个月前
目标库手动建表:将 hire_date 改为 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP;
迁移工具仅勾选迁移数据,跳过结构同步;
备选:Oracle 导出 CSV,通过 load 方式导入 GBase8a。
GBase用户21020发表于 1个月前
建议检查默认值是否需调整为GBase8a兼容语法。
李雪洋发表于 1个月前
检查默认值转换设置
GBase用户21020发表于 1个月前
建议检查GBase8a日期函数支持
GBase用户21020发表于 1个月前
建议检查迁移工具是否支持CURRENT_TIMESTAMP替换。
GBase用户21020发表于 1个月前
建议检查迁移配置中的默认值转换或方言设置。