Est-ce que bcp out maintenir l'ordre de la ligne lors de l'exportation dans un fichier de données?
-
19-09-2019 - |
Question
Je dois exporter des données vers un fichier à partir d'une grande table avec une seule colonne, mais des milliers de lignes où la commande de la ligne est importante. J'utilise commande bcp comme ci-dessous
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
Je suis arrivé à la table ayant 10 lignes et je vois que l'ordre des lignes est maintenue dans le fichier de données. Mais puis-je prendre bcp maintenir l'ordre si le nombre de lignes est de dire plus de 10000?
La solution
Je pense que ce sera si vous utilisez une instruction SQL (avec ORDER BY
) dans votre commande bcp:
http://www.sqlteam.com/ article / exportation-data-programatically-with-PCA-et-xp_cmdshell
où ils ont l'exemple suivant:
SET @bcpCommand = 'bcp "SELECT * FROM pubs..authors
ORDER BY au_lname" queryout "'
Autres conseils
Vous ne devriez jamais supposer qu'un SQL SELECT (ou bcp) retourne des valeurs dans un certain ordre ou le même ordre, sauf si vous utilisez une clause ORDER BY.
En général, les valeurs sont renvoyées dans l'ordre basé sur un index sur la table.
Cependant, j'ai vu des cas où les valeurs ne sont pas retournés dans l'ordre des indices. Il semble que les lignes dans le cache peuvent être retournés avant des lignes à partir du disque, même si les lignes sur le disque sont les premiers dans l'index.