Ha BCP mantenere fuori ordine fila durante l'esportazione in un file di dati?
-
19-09-2019 - |
Domanda
Ho bisogno di esportare i dati in un file da una tabella enorme con una sola colonna, ma migliaia di righe in cui l'ordinamento di fila è importante. Sto usando il comando bcp, come di seguito
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
Ho controllato con la tabella che ha 10 righe e vedo che l'ordine delle righe viene mantenuto nel file di dati. Ma posso supporre BCP sarebbe mantenere l'ordine se il numero di righe è dire di più di 10000?
Soluzione
Penso che sarà se si utilizza un'istruzione SQL (con ORDER BY
) nel comando BCP:
http://www.sqlteam.com/ Articolo / esportazione-dati-programmatico-con-BCP-e-xp_cmdshell
dove hanno il seguente esempio:
SET @bcpCommand = 'bcp "SELECT * FROM pubs..authors
ORDER BY au_lname" queryout "'
Altri suggerimenti
Non si dovrebbe mai pensare che uno SQL SELECT (o BCP) i valori torneranno in un certo ordine o lo stesso ordine se non si utilizza una clausola ORDER BY.
In generale, i valori vengono restituiti in ordine sulla base di un indice nella tabella.
Tuttavia, ho visto casi in cui i valori non vengono restituiti in ordine di indice. Sembra che le righe nella cache possono essere restituiti prima fila dal disco, anche se le righe sul disco sono la prima nell'indice.