2014-01-30 56 views
1

我要找的意見最好的SQL Server 2008 R2上的方法來從一個表移動相當大量的nVarChar數據類型行到另一個(實際上有一些表格)。總之,目標是:移動NVARCHAR從一個表到另一個,並返回PK原點表數據

  • chapterOne是具有nVarChar列名爲page_content
  • RTE已經創建了一個新表的表;這是chapterOne.page_content目的地和其它nVarChar數據類型的行從其它表
  • 第一步是重命名chapterOnechapterOneSource像這樣:

    exec sp_rename 'chapterOne ', 'chapterOneSource' 
    
  • 下一個步驟是一個外鍵添加到chapterOneSource像這樣:

    alter table chapterOneSource add pageContentID int null 
    
  • 現在我想按行從chapterOne.page_content移動數據行RTE.page_content。每行移動後,我想獲得的主鍵是RTE.ID,並將其放在相應的chapterOneSource.pageContentID列的數據來自。這是我遇到麻煩的部分。

有沒有人對使用SQL Server的最佳方法有任何建議/幫助?

  • 財務數據移動後的數據我想實際檢查兩個表,並看到一切按預期工作。然後我將刪除chapterOne.page_content並創建一個視圖。

請注意:我不是在改變任務的位置。有一個很好的理由爲什麼需要移動大容量的nVarChar列,所有這些都需要過夜同步,其中所有這些類型的列需要位於同一個表中。預先感謝您的寶貴時間

+0

所以讓我得到這個總結。您希望從一個表中獲取數據並將其放入另一個表中,而不是第一個表中的數據,而只是將外鍵指向數據現在駐留的表。 – 2014-01-30 21:27:46

+0

@sauce謝謝你的回覆。是的,這正是我想要做的事情。我正在研究可能的觸發器,將數據從tableA移動到tableB,將tableB中的主鍵移回到tableA中的FK字段。但我有一些麻煩。任何援助將是優秀 – Mat41

+0

'chapterOne'是否有任何PK列?這將使這變得更容易 - 只需插入鍵和'page_content'列,並通過加入密鑰進行更新。 –

回答

0

如果這只是一個時間的舉動我會做下列方式。

在你的餐桌,你有我想補充新列將容納外鍵的數據。完成後,將查詢寫入更新表以生成外鍵。之後,只需將外鍵列和數據移動到新表中。一旦完成並且您驗證數據是正確的,您可以從第一個表中刪除數據列。我將在明天發佈代碼,如何使用查詢完成所有操作。

INSERT INTO ChapterOneSource 
SELECT c.* 
    ,ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS MyNewFK 
FROM ChapterOne AS c; 

INSERT INTO RTE 
SELECT c.FK, c.DATA 
From ChapterOneSource AS c; 

ALTER TABLE ChapterOneSource 
DROP COLUMN Data 

使用Row_Number()我創造了新的唯一編號,這將是你未來的FK。這樣,而不是試圖找出哪個行稍後用FK更新,您只需將FK移動到PK字段並刪除page_content列。後來,你只需要通過使用IDENTITY列將數據添加到您的RTE表,生成新的PK和公正的地方,作爲FK到ChapterOneSource

PK
相關問題