6

我需要从一个只有一列但有数千行的大表中将数据导出到一个文件,其中行的顺序很重要。我正在使用 bcp 命令,如下所示,
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
我检查了有 10 行的表,我发现数据文件中维护了行的顺序。但是如果行数超过 10000,我可以假设 bcp 会保持顺序吗?

4

2 回答 2

8

我认为如果您ORDER BY在 bcp 命令中使用 sql 语句(with )会这样:

http://www.sqlteam.com/article/exporting-data-programatically-with-bcp-and-xp_cmdshell

他们有以下示例:

SET @bcpCommand = 'bcp "SELECT * FROM pubs..authors 
   ORDER BY au_lname" queryout "' 
于 2010-01-06T20:25:14.187 回答
3

除非您使用 ORDER BY 子句,否则您永远不应假设 SQL SELECT(或 bcp)将以特定顺序或相同顺序返回值。

通常,这些值是根据表上的索引按顺序返回的。

但是,我看到了未按索引顺序返回值的情况。即使磁盘上的行是索引中的第一行,缓存中的行似乎也可能在磁盘中的行之前返回。

于 2010-01-06T21:44:40.783 回答