使用Hibernate从MS SQL迁移到Postgres

时间:2011-09-14 06:25:18

标签: sql-server hibernate postgresql

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

现在我们计划继续前往Postgres。

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

我听说过每个表的SERIAL数据类型或序列,然后使用带有主键的nextval

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

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

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

2 个答案:

答案 0 :(得分:2)

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

create temporary table test (
  id serial primary key,
  data text
);
insert into test (data) values ('foo'), ('bar');
select * from test;
 id | data
----+------
  1 | foo
  2 | bar
(2 rows)

答案 1 :(得分:1)

它以其他方式起作用。我在<property name="hbm2ddl.auto">create</property>中提供了hibernate.cfg.xml。因此,表格是在首次运行时创建的。

然后需求发生了变化,我只需要获得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