Перенос автоматически сгенерированных идентификаторов из Oracle на SQL Server - PullRequest
1 голос
/ 07 ноября 2019

В настоящее время я разрабатываю Java-приложение для переноса данных из базы данных Oracle в эквивалентную структурированную базу данных SQL Server, которую я перенес с использованием liquibase. Теперь я не мог понять, как перенести автоматически сгенерированные идентификаторы, поскольку это не так просто. Я хочу, чтобы они имели те же значения, что и в моей исходной базе данных, и я хочу, чтобы они продолжались, поэтому, когда последний автоматически сгенерированный идентификатор был 177, например, я хочу, чтобы следующий сгенерированный был 178. Я знаю, что это неопределенный вопросно в настоящее время я просто думаю о концепции для применения в моем коде, поэтому любые предложения приветствуются. Заранее спасибо!

1 Ответ

4 голосов
/ 12 ноября 2019

Концепция состоит в том, чтобы переместить данные из Oracle на SQL Server как есть, используя SSIS / связанный сервер / Polybase / bcp:

INSERT INTO SQL_Server_table(id, ...)
SELECT id, ...
FROM Oracle_table;

Если таблица имеет свойство IDENTITY, то сначала необходимо отключить ее:

SET IDENTITY_INSERT SQL_Server_table ON

После перемещения данных необходимо задать для идентификатора самое высокое значение:

DBCC CHECKIDENT ('SQL_Server_table', RESEED, <max_calculated_value>+1);

Если в таблице нет столбца идентификаторовопределили, что вы можете использовать SEQUENCE:

CREATE SEQUENCE dbo.SQL_Server_table_seq
START WITH <max_calculated_value>+1
INCREMENT BY 1 ;  

ALTER TABLE SQL_Server_table
ADD CONSTRAINT df_SQL_Server_table_seq 
DEFAULT NEXT VALUE FOR dbo.SQL_Server_table_seq FOR [<identity_column>];

дБ <> Fiddle demo

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