2010-01-06 12 views
5

Potrzebuję wyeksportować dane do pliku z ogromnej tabeli zawierającej tylko jedną kolumnę, ale tysiące wierszy, w których ważna jest kolejność wierszy. Używam polecenia bcp, jak poniżej:
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
Sprawdziłem z tabelą mającą 10 wierszy i widzę, że kolejność wierszy jest zachowywana w pliku danych. Ale czy mogę założyć, że bcp utrzyma zamówienie, jeśli liczba wierszy wynosi więcej niż 10000?Czy polecenie bcp utrzymuje kolejność wierszy podczas eksportowania do pliku danych?

Odpowiedz

1

Nigdy nie należy zakładać, że SQL SELECT (lub bcp) zwróci wartości w określonej kolejności lub w tej samej kolejności, chyba że użyjesz klauzuli ORDER BY.

Ogólnie wartości są zwracane w kolejności na podstawie indeksu w tabeli.

Jednak widziałem przypadki, w których wartości nie są zwracane w kolejności indeksowej. Wygląda na to, że wiersze w pamięci podręcznej mogą zostać zwrócone przed wierszami z dysku, nawet jeśli wiersze na dysku są pierwszymi w indeksie.