2014-03-19 20 views
1

我正在嘗試BCP在一個平面文件中,該文件必須保持文件內的序列。例如,平面文件中的第1行必須位於表格的第1行。您可以BCP以與平面文件相同的順序導入記錄嗎?

然後,我會爲他們分配標識,因爲他們插入的方式我知道他們的順序。然而,從我的研究的排序是根據鏈接ASC或DESC: http://msdn.microsoft.com/en-us/library/ms162802(v=sql.105).aspx

-h"ORDER(column[ASC | DESC] [,...n])" 

我不希望在ASC或DESC插入我必須遵循相同的順序平面文件。這可能嗎?

+0

我相信如果你省略任何排序,它會從文件中導入而不會改變,但我可能是錯的。 –

回答

0

bcp應該按照它在平面文件中的順序將數據添加到您的數據庫表中。因此,您可以完全省略bcp語句中的-h參數。

0

我記得過去的最新文檔和文檔已經指出,BCP實用程序會假定沒有載入提示來指定文件中數據的順序(這將需要表上的聚集索引爲導入到)中,數據在文件中未排序。

因此,我相信你不應該認爲BCP會按順序加載數據。這主要是因爲存儲引擎的需求會如何影響數據的讀取和存儲。對於非常大的文件(VL可能取決於系統的資源),存儲引擎可能一次將數據寫入多個頁面(或類似這樣的內容......不確定內部......但我知道他們不應該被假定)。

沒有任何聲明(我可以找到)來自MS,聲明SQL「WILL」保持相同的順序,並且只提到SQL「不會假定」相同的順序足以永遠不會假定相同的順序...我會說。

文件越小,越有可能逃脫這個假設我敢打賭。

+0

看起來你錯過了一些文檔鏈接。 – Dejan

相關問題