Hat bcp aus Zeilenfolge beibehalten, während in eine Datendatei exportieren?
-
19-09-2019 - |
Frage
Ich muss die Daten in eine Datei aus einer riesigen Tabelle exportieren mit nur einer Spalte, sondern Tausende von Zeilen, in denen die Reihenfolge der Reihe von Bedeutung ist. Ich bin mit bcp wie unten
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
Ich habe mit der Tabelle 10 Zeilen mit, und ich sehe, dass die Reihenfolge der Zeilen in der Datendatei beibehalten wird. Aber kann ich davon ausgehen bcp würde die Ordnung aufrechtzuerhalten, wenn die Anzahl der Zeilen sagen mehr als 10000?
Lösung
Ich denke, es wird, wenn Sie eine SQL-Anweisung (mit ORDER BY
) verwenden in Ihrem bcp-Befehl:
http://www.sqlteam.com/ Artikel / Export-Daten-programmatisch-mit-bcp-and-xp_cmdshell
, wo sie das folgende Beispiel:
SET @bcpCommand = 'bcp "SELECT * FROM pubs..authors
ORDER BY au_lname" queryout "'
Andere Tipps
Sie sollten nie davon ausgehen, dass eine SQL SELECT (oder BCP) Werte in einer bestimmten Reihenfolge angezeigt werden oder die gleichen Reihenfolge, wenn Sie eine ORDER BY-Klausel verwenden.
Im Allgemeinen werden die Werte zurückgeführt, um auf der Grundlage eines Index für die Tabelle.
Ich habe jedoch Fälle, in denen die Werte nicht in Index-Reihenfolge zurückgegeben. Es scheint, dass die Zeilen im Cache können, bevor Zeilen von der Platte zurückgeführt werden, auch wenn die Zeilen auf der Festplatte sind die erste im Index.