Миграция с MS SQL на Postgres с Hibernate - PullRequest
2 голосов
/ 14 сентября 2011

Мы используем MS SQL 2008 в качестве базы данных с Hibernate.

Теперь мы планируем перейти к Postgres.

Я знаю, что в Postgres нет функции автоматического увеличения для столбца первичного ключа.

Я слышал о типе данных SERIAL или последовательностях для каждой таблицы и затем использовал nextval с первичным ключом.

База данных MS SQL достаточно большая и содержит около 150 таблиц.

Итак, я хочу мнения и хочу знать, что Если мы пойдем путем создания последовательностей или SERIAL будет работать.

Какой из них может быть лучшим вариантом?

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

В PostgreSQL последовательный тип является автоматическим, точно так же как автоинкремент в MSSQL / MySQL и т. Д. Попробуйте, например:

create temporary table test (
  id serial primary key,
  data text
);
insert into test (data) values ('foo'), ('bar');
select * from test;
<i> id | data
----+------
  1 | foo
  2 | bar
(2 rows)
</i>
1 голос
/ 16 сентября 2011

Работало по-другому.Я дал <property name="hbm2ddl.auto">create</property> в hibernate.cfg.xml.ТАК, таблицы создаются при первом запуске.

Затем требования изменились, и мне нужно было получить данные только для 12-15 таблиц.Итак, я сгенерировал скрипт для него, используя MS SQL Server 2008.

Затем, конечно, вручную изменил sysntax для каждой вставки таблицы.

Есть несколько вещей, которые требуются.*

В MSSQL у нас был tinyint как тип данных для boolean.Таким образом, для Postgres необходимо вручную преобразовать в 'true' и 'false'.

MS SQL экспортирует timstamp в HEXA и дает вам CAST ... AS DATETIME во время генерации скрипта.Я изменил их на CURRENT_TIMESTAMP в Postgres.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...