题
我需要将数据从一个巨大的表只有一列列,但其中数千行的顺序很重要导出到文件中。我使用BCP命令,如下结果
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
结果
我用具有10行的表和我看到的行的顺序被保持在数据文件进行检查。但是,我可以承担BCP将维持秩序,如果行数是说超过10000?
解决方案
我觉得会,如果你在你的BCP命令使用SQL语句(与ORDER BY
):
http://www.sqlteam.com/文章/出口数据-编程与 - BCP-和xp_cmdshell的
,其中它们具有以下示例:
SET @bcpCommand = 'bcp "SELECT * FROM pubs..authors
ORDER BY au_lname" queryout "'
其他提示
您应该永远不要假设,除非你使用ORDER BY子句的SQL SELECT(或BCP)将返回按照一定的顺序或以相同的顺序值。
通常,这些值,以便基于在表中一个索引返回。
然而,我看到其中的值不是在索引顺序返回的情况。看来,在高速缓存行可以从磁盘的行之前,即使在磁盘上的行是在索引中的第一个被返回。
不隶属于 StackOverflow