H2数据库数据迁移

19 年 11 月 8 日 星期五
539 字
3 分钟

记一次H2与MySQL之间的数据迁移

最近在用Golang写爬虫,使用的ORM是Gorm,暂不正式支持嵌入式的H2数据库,所以就用mysql来存爬取到的数据。

由于原先数据是放在H2数据库里的,便产生了在H2Mysql之间迁移数据的需求。

表结构

之前是使用FlywayH2数据库进行的版本管理,所以之间写的Sql保存了下来,H2MysqlSql语法还是比较像的:

H2 创建 user表

sql
create table USER
(
    ID           BIGINT auto_increment,
    NICKNAME     VARCHAR(100) not null,
    PASSWORD     VARCHAR(100),
    EMAIL        VARCHAR(200) not null
        constraint USER_EMAIL_UINDEX
            unique,
    AVATARIMAGE  VARCHAR(500),
    GITHUB_ID    VARCHAR(500)
        constraint USER_GITHUB_ID_UINDEX
            unique,
    GMT_CREATE   BIGINT       not null,
    GMT_MODIFIED BIGINT       not null,
    constraint USER_PK
        primary key (ID)
);

comment on table USER is '论坛的用户表';

comment on column USER.GMT_CREATE is '创建时间戳';

comment on column USER.GMT_MODIFIED is '变更时间戳';

create unique index USER_ID_UINDEX
    on USER (ID);

Mysql创建user表

sql
create table user
(
    id           bigint auto_increment,
    nickname     varchar(100) not null,
    password     varchar(100),
    email        varchar(200) not null,
    avatarimage  varchar(500),
    github_id    varchar(500),
    gmt_create   bigint       not null comment '创建时间戳',
    gmt_modified bigint       not null comment '变更时间戳',
    constraint user_pk
        primary key (id)
) comment '论坛的用户表';

create unique index user_id_uindex
    on user (id);

create unique index user_email_uindex
    on user (email);

create unique index user_github_id_uindex
    on user (github_id);

H2增加一个字段

sql
alter table user
 add description varchar(20);

mysql增加一个字段

sql
alter table USER
 add description varchar(20);

H2删除字段

sql
alter table COMMENT drop column CITED_COMMENT_CONTENT;

mysql删除字段

sql
alter table COMMENT drop column CITED_COMMENT_CONTENT;

H2修改字段

sql
alter table COMMENT alter column CITED_COMMENT_CONTENT VARCHAR(512);
alter table SECTION alter column INVITATION_STAR_NUM rename to "Section_TOTAL_CANDY";

comment on column SECTION."Section_TOTAL_CANDY" is '版块总糖数';

mysql修改字段

sql
alter table comment modify cited_comment_content varchar(512);
alter table section change invitation_star_num section_total_candy bigint default 0  comment '版块总糖数';

IDEA可以使用ctrl+shift+u把字母批量的改为大写或小写。

这样修改sql的目的是想让mysql接续H2的版本控制,大数据量的数据应使用其他方式。

数据

表结构迁移完成后,数据的迁移就变得很简单。以前在OracleMysql的数据迁移中,我使用的是Navicat,现在发现IDEA自带的数据库管理工具也挺好用的,IDEA的数据跨库迁移:

table.png
chose-target.png

找到对应表,确认即可,注意错误信息。

文章标题:H2数据库数据迁移

文章作者:shirtiny

文章链接:https://kizamu.anror.com/posts/h2-database-migration[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。