【问题标题】:Migrate From MS SQL To Postgres With Hibernate使用 Hibernate 从 MS SQL 迁移到 Postgres
【发布时间】:2011-11-16 17:54:42
【问题描述】:

我们将 MS SQL 2008 作为 Hibernate 的数据库。

现在我们计划继续使用 Postgres。

我知道 Postgres 没有主键列的自动递增功能。

我听说了每个表的 SERIAL 数据类型或序列,然后将 nextval 与主键一起使用。

MS SQL 数据库足够大,包含大约 150 个表。

所以,我想要意见并想知道我们应该通过创建序列还是 SERIAL 来工作。

哪一个可能是更好的选择?

【问题讨论】:

    标签: sql-server hibernate postgresql


    【解决方案1】:

    在 PostgreSQL 中序列类型是自动的,就像 MSSQL/MySQL 等中的自动增量一样。试试例子:

    create temporary table test (
      id serial primary key,
      data text
    );
    insert into test (data) values ('foo'), ('bar');
    select * from test;
    
     标识 |数据
    --+--------
      1 |富
      2 |酒吧
    (2 行)
    

    【讨论】:

      【解决方案2】:

      它以其他方式工作。我在hibernate.cfg.xml 中给了<property name="hbm2ddl.auto">create</property>。所以,表是在第一次运行时创建的。

      然后需求发生了变化,我只需要获取 12-15 个表的数据。因此,我使用 MS SQL Server 2008 为它生成了一个脚本。

      然后当然要为每个表的插入手动更改 sysntax。

      需要的东西很少。

      1. 在 MSSQL 中,我们将 tinyint 作为 boolean 的数据类型。因此,Postgres 需要手动转换为 'true' 和 'false'。

      2. MS SQL 以 HEXA 格式导出 timstamp,并在脚本生成期间为您提供 CAST ... AS DATETIME。我在 Postgres 中将它们更改为 CURRENT_TIMESTAMP

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-04
        • 2012-02-14
        • 2016-05-06
        • 2019-09-16
        • 2010-09-18
        • 1970-01-01
        相关资源
        最近更新 更多