2016-06-16 5 views
0

新しいデータベース構造に変換しようとしている古いデータベースがありますが、続行する前に、何か最良の方法があるかどうかを知りたいと思います。 私はCursorを使用しようとしましたが、時間がかかります。私は古いデータベースから新しいデータベースに移行するために合計13のテーブルを持っています。別の構造を持つ古いデータベースを新しいデータベースに移行する最も良い方法

DECLARE @GGroupId as Int; 
DECLARE @GName as NVARCHAR(MAX); 
DECLARE @GDescription as NVARCHAR(MAX); 
DECLARE @GLastModification as DateTime; 
DECLARE @GLastUser as NVARCHAR(MAX); 
DECLARE @Prio as int; 

DECLARE @NEW_GROUP_ID as int; 
DECLARE @PProupId as Int; 
DECLARE @PName as NVARCHAR(MAX); 
DECLARE @PDescription as NVARCHAR(MAX); 
DECLARE @PLastModification as DateTime; 
DECLARE @PLastUser as NVARCHAR(MAX); 

DECLARE Group_Cursor CURSOR FOR 
SELECT Ord_Id, Bezeich,Notiz, Prio 
FROM [MigrationAPlanDB].[dbo].[Ordner]; 
OPEN Group_Cursor 
FETCH NEXT FROM Group_Cursor INTO @GGroupId, @GName, @GDescription, @Prio; 
WHILE @@FETCH_STATUS = 0 
    BEGIN 
     DECLARE @USERID as int; 
     /*SELECT U.Id from [MigrationAPlanDB].[dbo].User_Names as U where U.User = @GLastUser INTO @USERID;*/ 
     INSERT INTO [ProjectManagement].[dbo].[Groups] (Name, Description, Priority ,CreatorId, InsertDate, IsDeleted) 
     VALUES (@GName, cast(@GDescription as ntext), @Prio, 1, GETDATE(), 0) 
     SET @NEW_GROUP_ID = SCOPE_IDENTITY() 
     DECLARE Project_Cursor CURSOR FOR 
      SELECT Pro_ID,Bezeich, Notiz, LastModification, LastUser FROM [MigrationAPlanDB].[dbo].[Projekte] WHERE Ord_Id = @GGroupId; 
      OPEN Project_Cursor; 

      FETCH NEXT FROM Project_Cursor INTO @PProupId, @PName, @PDescription, @PLastModification, @PLastUser; 
       WHILE @@FETCH_STATUS = 0 
       BEGIN 
        INSERT INTO [ProjectManagement].[dbo].[Projects] (Name, Description,UpdateDate 
        ,CreatorId, InsertDate) VALUES (@PName, @PDescription, @PLastModification, 1, GETDATE()); 
        /*SELECT SCOPE_IDENTITY() INTO @NEW_PROJECT_ID;*/ 
       END; 
       CLOSE Project_Cursor 
       DEALLOCATE Project_Cursor 
    END; 
CLOSE Group_Cursor 
DEALLOCATE Group_Cursor 
GO 
+0

データベース名を教えてもらえますか? PostgreSQLから別のPostgreSQLインスタンス/バージョンへ、あるいは異なるベンダーの製品Aから製品Bへと言いますか?その詳細は、「カーソルを使用しようとしましたが、時間がかかります」というステートメントのように、パフォーマンスには役立ちます。ありがとう。 – Dilettant

+0

私のデータベース名はProjectsManagementで、SQL Serverにあり、古いデータベースを新しい構造の新しいデータベースに変換したいのですが、どのような詳細情報を提供すればいいですか?移行するレコード。 –

+0

SQL Serverは私が疑問に思っていた情報でした。またはタグとして;-)ありがとうございました。 – Dilettant

答えて

0

なぜカーソルを使用していますか?

INSERT INTO [ProjectManagement].[dbo].[Groups] 
        (Name,   Description, Priority ,CreatorId, InsertDate, IsDeleted) 
      SELECT Bezeich, cast(Notiz as ntext),  Prio,  1, GETDATE(), 0 
      FROM [MigrationAPlanDB].[dbo].[Ordner] 

INSERT INTO [ProjectManagement].[dbo].[Projects] 
         (Name, Description,   UpdateDate, CreatorId, InsertDate) 
      SELECT p.Bezeich,  p.Notiz, p.LastModification,   1, GETDATE() 
      FROM [MigrationAPlanDB].[dbo].[Projekte] p 
      JOIN [MigrationAPlanDB].[dbo].[Ordner] o on p.Ord_Id = o.Ord_Id 
+0

また、あるテーブルの関係を別のテーブルに設定する必要があります。 –

+0

テーブル間の関係にはどのようなものがありますか?テーブルからテーブルへ正しい順序でデータをコピーすると、制約が維持されます。 –

+0

私は移行する13のテーブルを持っており、それぞれは他のテーブルと何らかの関係を持っています。 –

関連する問題