簡體   English   中英

SQL Server從平面文件插入

[英]SQL Server insert from flat file

我有一些數據需要導入到SQL Server中。

我有以下領域:

   ID Param1  Param2 

它進入表的方式並不那么直接。 它需要作為

   ID Param1   5655 DateTime
   ID Param2   5555 DateTime

這樣,它需要在表中為輸入文件的一行插入2條記錄。 想知道在SQL Server中執行此操作的最佳方法是在導入文件方面。 我可以進行批量插入,但是我的列需要完全匹配。 就我而言,它不

我也在使用.NET C#。 想知道是否將文件導入到數據表等,然后使用foreach外觀進一步操作它可能是最好的方法。

由於您使用的是C#,因此可以使用表值參數以任何您喜歡的方式流式傳輸數據。 您可以從文件中讀取一行,將其拆分,然后傳遞2行,而不是將列1映射為1。我在此答案中詳細介紹了一種類似的方法:

如何在最短的時間內插入1000萬條記錄?

這里的主要區別在於,在GetFileContents()方法內部的while循環中,您將需要調用yield return兩次,每次調用一次。

因為這個問題對我來說還不太清楚,但是如果我一切都好,那么有很多方法可以使用,其中一種簡單的方法是使用臨時表:

創建一個臨時表:

CREATE TABLE #TBL (ID int, param1 datetime, param2 datetime);

從文件批量插入到臨時表

BULK INSERT #TBL FROM 'D:\data.txt' WITH (FIELDTERMINATOR = ' ');

現在您可以使用臨時表上的特定查詢將其插入永久表中(假設您的表結構為:(ID,param)):

INSERT INTO TABLE_NAME(id,PARAM)
SELECT DISTINCT T.ID,T.PARAM1
FROM #TBL
UNION 
SELECT DISTINCT T.ID,T.PARAM2
FROM #TBL

暫無
暫無

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

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