Mysql、Oracle、DM、Tbase数据库差异性

本文对比了MYSQL、ORACLE、TBASE和DM数据库的数据类型差异,包括字符串、BLOB和数字类型的不同,并介绍了它们在属性与字符串标识、注释、主键索引等方面的语法差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL、ORACLE、TBASE、DM 数据库对比

数据类型差异 :

字符串:

以上数据库均支持标准的字符CHAR/VARCHAR 但Oracle与DM提供VARCHAR2

目前VARCHAR2与VARCHAR 无差别。但Oracle官方提示 VARCHAR2不会随VARCHAR的改变而改变。即考虑未来兼容性在Oracle等数据库推荐使用VARCHAR2

BLOB

MYSQL 的BLOB 可以对应JDBC 的byte[] 而非Blob类

数字类型

  1. 1、Mysql :TINYINT、INT 、LONG、FLOAT 、DOUBLE

2、Oracle :INTERGER、 NUMBER,NUMERIC,FlOAT ,DOUBLE

( NUMBER可以表示所有数字类型NUMBER(38,0)==INTERGER 但不推荐直接使用NUMBER,在JDBC转换可以发生 INT数据转换为JAVA的LONG类型导致使用时发生强转异常)

  1. 3、TBASE :SMALLINT(INT2)、INTEGER、BIGINT(INT8)、DECIMAL(FLOAT8)、NUMERIC、REAL(FLOAT) 、SERIAL(自增整数4字节)、BIGSERIAL(大范围的自增整数8字节)

  2. 4、DM:、常用部分同ORACLE

语法差异

  1. 1、属性与字符串标识

以上数据库均遵从标准SQL规范 字符串使用单引号'''标识,属性使用双引号标识'"'

但MYSQL 可以使用'`'标识属性;''','"'等标识字符串。

代码中不得不使用原生SQL语句时,考虑兼容性问题,禁止使用'"'标识字符串。

  1. 2、属性及表注释

MYSQL (属性 类型 COMMENT '注释')

ORACLE、达梦、TBASE 均不能在创建表是直接注释 (

-- 表注释

COMMENT ON TABLE WOF_TB_ADMIN IS '管理员表';

-- 属性注释

COMMENT ON COLUMN WOF_TB_ADMIN.ADMIN_ID IS '管理员ID';

  1. 3、主键索引差异

除TBASE不支持建表时添加主键外,其他数据库,建表语句后使用PRIMARY KEY("主键")

除MYSQL 支持建表时建立索引外,其他数据库均不支持建表时建立索引。只能建表后手动修改。

TBase数据库中的表迁移到MySQL数据库涉及几个关键步骤。以下是详细的迁移过程: ### 步骤一:导出数据 1. **备份源表结构**: - 使用 `pg_dump` 工具从 TBase 导出自定义 SQL 脚本,仅包含表结构。 ```bash pg_dump -h 主机名 -p 端口 -U 用户名 -d 数据库名称 -s > schema.sql ``` 2. **备份数据**: - 将实际的数据也导出来,可以选择CSV等通用格式方便后续导入操作。 ```sql COPY 表名 TO '/path/to/output.csv' WITH CSV HEADER; ``` ### 步骤二:转换SQL语法差异 由于两个系统的方言不同,在此阶段需要处理两者之间的兼容性和特定功能。 - 修改 `schema.sql` 中与 MySQL 的DDL语句存在差异的地方; - 移除 PostgreSQL 特有的属性如序列(sequence)、规则(rule),并考虑如何替代; ### 步骤三:创建目标环境下的表格 登录到MySQL,并依据调整后的脚本来建立相应的架构: ```sql mysql> SOURCE /path/to/schema_converted_for_mysql.sql ; ``` ### 步骤四:传输原始记录集至新的存储空间内 对于之前保存好的`.csv`文件,则通过LOAD DATA INFILE命令快速加载入对应的新建表里头去. ```sql LOAD DATA LOCAL INFILE '/path/to/input.csv' INTO TABLE 目标表名 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ``` 注意路径以及分隔符字符匹配问题! 完成以上几步之后就实现了基本意义上的跨平台转移工作啦~当然如果涉及到视图(view),触发器(trigger),函数(function/stored procedure)等内容的话还需要进一步做针对性适配哦~
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值