2014-03-19 21 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

相关问题