簡體   English   中英

將列字段作為新行拉入另一個表

[英]Pull column fields into another table as new rows

我在這上面絆腳石,希望它很簡單,而且我看錯了。

我正在接收格式化的xls文件。 有一個C#應用程序可以處理數據,並在我的表中插入一個SQLBulkCopy。 一共有5對列,一列是Url Text描述,一列是URL本身。 這些URL將引用html或pdf文件,稍后我將其拉入另一個單獨的表中。

忽略不相關的字段,我有一個包含字段的表[Base]

[ID](身份)
[BaseID]
一堆其他相關領域,然后
[LinkText1]
[LinkURL1]
[LinkText2]
[LinkURL2]
[LinkText3]
[LinkURL3]
[LinkText4]
[LinkURL4]
[LinkText5]
[LinkURL5]

URL /文件的存儲將在表[Documents]中包含以下字段:

[BaseIdentityID]-引用[Base]表中的ID字段
[DocIndex]-每個基本記錄可以填充1-5個URL。這是知道它是哪個URL#。
[MimeType]
[網址]
[文本]
[內容]
[已處理]-位-稍后將提取url數據,這標志了這一點。

我在[Base]表上使用了INSTEAD OF觸發器。 這些記錄可以更新,因此我們將存檔數據保留在表中。 觸發器查看我們要插入的內容,將現有版本標記為舊版本,然后將此新的Base記錄插入為CurrentVersion。

在此觸發器中,我現在想基於5對URL數據中的每對插入[Documents]表中的新行,並在Documents表中傳遞[BaseIdentityID]的[Base] ID身份字段, LinkURL1的[DocIndex]為1,LinkURL2的[DocIndex]為2,等等。

很難想象我將如何做到這一點。 有什么建議么? 我試圖避免使用游標,因為我可以插入很多基本記錄。

謝謝。

也許您可以在AFTER INSERT觸發器中編寫這種查詢:

INSERT INTO [InternationalDR].[dbo].[Documents] ([BaseIdentityID], [DocIndex], [Url], [Text])
SELECT INSERTED.[ID], 1, INSERTED.[LinkURL1], INSERTED.[LinkText1] FROM INSERTED
UNION ALL SELECT INSERTED.[ID], 2, INSERTED.[LinkURL2], INSERTED.[LinkText2] FROM INSERTED
UNION ALL SELECT INSERTED.[ID], 3, INSERTED.[LinkURL3], INSERTED.[LinkText3] FROM INSERTED
UNION ALL SELECT INSERTED.[ID], 4, INSERTED.[LinkURL4], INSERTED.[LinkText4] FROM INSERTED
UNION ALL SELECT INSERTED.[ID], 5, INSERTED.[LinkURL5], INSERTED.[LinkText5] FROM INSERTED;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM