首页
学习
活动
专区
圈层
工具
发布

纯分享:将MySql的建表DDL转为PostgreSql的DDL.md

连上就各种报错,放弃 dbeaver,这个倒是可以用,就是我感觉操作太麻烦了,太繁琐 基于以上原因,一直用dbeaver来着,之前两次把mysql项目的表结构换成pg,一次是写了个乱七八糟的代码来做建表语句转换...,一次是用dbeaver建的,太繁琐了。...这次又来了个项目,我就换回了我熟悉的sqlyog(一款mysql客户端),几下就把表建好了(mysql版本),然后写了个工具代码,来把mysql的DDL转换成pg的。 下面简单介绍下这个转换代码。...: image-20230902221909233 如上就包含了索引、列定义、建表选项等等。...Index index) -> Objects.equals("PRIMARY KEY", index.getType())) .findFirst().orElse(null); 组装sql:建表第一行

2.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL DDL表操作

    一、查询创建1、查询当前数据库所有表show tables;2、查看指定表结构 desc 表名 ;通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为NULL,是否存在默认值等信 息。...3、查询指定表的建表语句show create table 表名 ;通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询 到,因为这部分是数据库的默认值,如:存储引擎...) comment '姓名',age int comment '年龄',gender varchar(1) comment '性别') comment '用户表';二、数据类型MySQL中的数据类型有很多...入职时间(取值年月日即可)对应的建表语句如下:create table emp(id int comment '编号',workno varchar(10) comment '工号',name varchar...代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不 加该参数项,删除一张不存在的表,执行将会报错)。

    1.2K70

    MySQL谬误集02: DDL锁表

    导语 | 本文是MySQL谬误集系列文章的第二篇,该系列旨在纠正一系列似是而非的说法。比如关于MySQL DDL操作,有很多同学认为会锁表,那是不是一定会锁表呢?是锁读还是锁写呢?锁多长时间?...旧的copy临时表方式 我们旧有印像中的DDL变更导致长时间锁表,无法进行DML,使用的一般就是copy方式,以新建索引为例,它的操作步骤大概如下: (1)新建带索引的临时表 (2)锁原表,禁止DML,...利用这个特性,可以在导出/导入表的时候,先导数据(有主键),再建二级索引,可以大幅缩短时间。...Instant DDL MySQL8.0.12中DDL新增instant语法,只修改元数据,不需要锁表,这里最重要的改进是add column instant(即刻加列),在8.0之前版本,Online...MySQL加锁机制 5.MySQL字符编码指南--基础篇 6.从财政学专业到TOP金融数据库DBA--我的学习之路 7.大胆假设小心求证:MySQL双写+双向复制实战 8.MySQL字符集终极指南--进阶篇

    2K32

    MySQL 表 DDL 操作全攻略

    我们在运维MySQL数据库的时候,时常会对数据表进行DDL操作,比如修改字段、添加索引等。对于MySQL,DDL操作时会锁表。如果表比较小,比如小于1w时,影响还是比较小的。...MySQL 千万级表因为上述相关的一些问题,需要进行 DDL 操作时,由于其锁表特性可能引发诸多严重问题:长时间锁表导致业务中断:当执行 DDL 操作修改千万级表的字段或索引时,例如添加一个新字段,MySQL...主从复制延迟加剧:在主从架构的 MySQL 环境中,主库执行 DDL 操作锁表后,从库的复制线程会因为无法获取主库表的变更而延迟。当表数据量达到千万级时,这种延迟会更加明显。...最新特性及使用MySQL 8.0 中的 Online DDL 有了更多的优化和特性.工作原理在 MySQL 5.6 开始支持,通过不同的锁级别控制 DDL 期间的读写操作,在 MySQL 8.0 有了更多优化...但需要注意的是,并非所有的 DDL 操作和表结构都支持这种无锁或低锁级别的操作,具体要根据实际情况和 MySQL 版本进行调整.三、总结在处理 MySQL 千万级表的 DDL 操作时,我们需要充分认识到锁表可能引发的一系列严峻问题

    54010

    mysql常见的建表选项和约束

    约束主要是防止非法数据进入表中,保证数据的正确性和一致性,统称为数据完整性 约束也可以防止一个表被删除 MySQL的约束保存在information_schema.table_constraints中...主键是用来唯一标识表中的每一行,类型一般为整型或者字符串 具有主键约束的列不允许有null值,不允许有重复值 每个表最多只允许一个主键,可定义联合主键,主键名总是PRIMARY 联合主键 用几个列来进行唯一标识一行...,外键是构建于一个表的两个字段或者是两个表的两个字段之间的参照关系 注意: 具有外键约束的列的值不能随便给,必须满足外键所引用的主键的取值 一张表中可以定义多个外键 外键列默认可以给null值 父子表...外键所在的表叫做子表,从表 外键所引用的主键所在的表叫做父表,主表 constraint emp_deptid_fk foreign_key(deptid) references dept(deptid...Oracle中国可以使用check约束,有相应作用 mysql> create table test_ck( -> id int check(id>0) -> ); mysql

    1.7K10

    MySQL建表数据类型的选择

    如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更复杂。特别是计划在列上建索引,就应该尽量避免设计成可为 NULL 的列。...MySQL 可以为整数类型指定宽度,例如 int(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数。...char 类型是定长的:MySQL 总是根据定义的字符串长度分配足够的空间。 char 存储会删除存储数据的末尾空格;varchar 不会。...与其它类型不同,MySQL 把每个 blob 和 text 值当作一个独立的对象处理。...枚举(enum)类型 MySQL 在内部会将每个值在列表中的位置保存为整数,并且在表的 .frm 文件中保存 “数字-字符串” 映射关系的 “查找表”。

    6.7K10

    粗聊Mysql——你会建库建表么?

    本文中说到的“建”,并非单纯的建一个库,或是建一张表,而是你建好的库和表在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。...比如现在有2张表,一张新闻栏目表,一张新闻表,现在两张表需要进行关联,我想大多数人的做法肯定是在新闻表里建一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两表关联。   ...所以我建议两表之间关联不用主键,而是单独建一个编号的字段,我们这里可以用mysql的uuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张表要2个主键,一个物理主键(自增id...至于性能,我本地测了下基本上没差异,网上也有人做了10W条数据的测试——《实测MYSQL UUID性能》。...所以我建议,既然定义为varchar,就代表不会涉及到计算,何不干脆定义一个通用的长度,比如varchar(50),如果真要限制长度,用程序去判断,不要让数据库来限制,不然用户输了一长串,结果mysql

    6.9K10

    MySQL数据库DDL表结构操作

    前言本专栏内容将会详细讲解MySQL数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。...=utf8] //可根据需要指定表的字符编码集案例 :创建符合下面字段名, 字段类型的表列名数据类型说明subjectIdINT课程编号subjectNameVARCHAR(20)课程名称subjectHoursINT...列ALTER TABLE subject ADD gradeId int;2.2 修改表中的列在表结构确定后,有的时候字段长度定的短了,可以用下面语句更改字段类型和长度:#修改课程表中课程名称长度为10...数据表的删除(DROP)删除表语法:DROP TABLE 表名3.1 删除学生表通过下面语句可以删除整个表:#删除学生表DROP TABLE subject;----四....结语最后,我们对本文核心要点进行总结:本节中主要学习的是DDL中的表结构的操作其中创建表语句, 删除表语句比较重要。

    4.3K10

    MySQL在线DDL修改表结构的简单经验分享

    摘 要 在线DDL修改生产环境的大表一直是运维、DBA一个很头痛的问题,本文分享一些相关经验,希望对还在头痛的同学能有所帮助,当然更希望路过的大神,如果有更靠谱的方案能够指点一二,不吝赐教。...pt-osc 工具的工作流程: 检查更改表是否有主键或唯一索引,是否有触发器 检查修改表的表结构,创建一个临时表,在新表上执行 ALTER TABLE 语句 在源表上创建三个触发器分别对于 INSERT...UPDATE DELETE 操作 从源表拷贝数据到临时表,在拷贝过程中,对源表的更新操作会写入到新建表中 将临时表和源表 rename(需要元数据修改锁,需要短时间锁表) 删除源表和触发器,完成表结构的修改...四、小结 对于 MySQL 在线 DDL 修改大表,gh-ost 和 pt-osc 都是很不错的选择,前提是不能有坑爹的触发器和外键!当然,实在是遇上了也没什么办法,只能硬扛!...以上,就是我在 MySQL 在线 DDL 修改表结构的一些经验分享,希望路过的大神如果有更好的方案能指点一二,不吝赐教。

    3.6K70

    【0基础学习mysql】之DDL-表操作

    目录 DDL-表操作 1.创建表 1.举例 2.执行结果 2.显示表 1.举例 2.执行结果  3.显示数据库中的表 1.举例 2.执行结果  4.修改表 1.添加字段  2.修改字段  3.删除字段...4.修改表名  5.删除表 总结 ---- DDL-表操作 1.创建表 create table 表名(字段 字段类型,字段,字段类型); 1.举例 create table user(id int,name...1.添加字段 ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释][约束];([]只是用于区分,在写代码的时候是没有[]的) 举例: 为user添加一个名称为gender,...1.删除表 DROP TABLE[IF EXISTS] 表名; 2.删除该表,并重新创建新表 TRUCATE TABLE 表名; 总结 要熟练掌握建表、改表、展示表、删表。...各位学习mysql的朋友可以联系我,互相讨论,一起进步!!! +✏️+⭐️是对博主最大的鼓励与支持!!!

    38540

    【MySQL】DDL的表结构的数据类型盘点&案例演示

    前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎!...longtext 0-4294967295 bytes 极大文本数据 三.日期类型 单独年月日十分表 混合年月日时分秒 timestanp注意事项:时间戳只能到2038年 date / time...timestanp 4 byte 1970-01-01 00:00:01 至 2038 -01-1903:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳 四.根据需求创建表(...设计合理的数据类型、长度) 设计一张员工信息表,要求如下: 编号(纯数字) 员工工号(字符串类型,长度不超过10位) 员工姓名(字符串类型,长度不超过10位) 性别(男/女,存储一个汉字) 年龄(正常人年龄...unsigned comment '年龄', idcard char(18) comment‘身份证号’, entrydate date comment ‘入职时间’ )comment '员工表'

    25410
    领券