Я должен экспортировать данные в файл от огромной таблицы только с одним столбцом, но тысячи строк, где упорядочивание строки важно. Я использую команду BCP как ниже
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
Я сверился с таблицей, имеющей 10 строк, и я вижу, что порядок строк поддержан в файле данных. Но я могу предположить, что BCP поддержала бы порядок, если количество строк, говорят больше чем 10 000?
Я думаю, что так и будет, если Вы используете sql оператор (с ORDER BY
) в команде bcp:
http://www.sqlteam.com/article/exporting-data-programatically-with-bcp-and-xp_cmdshell
, где есть следующий пример:
SET @bcpCommand = 'bcp "SELECT * FROM pubs..authors
ORDER BY au_lname" queryout "'
Вы никогда не должны предполагать, что SQL SELECT (или bcp) вернет значения в определенном ордере или в том же ордере, если только вы не используете пункт ORDER BY.
Как правило, значения возвращаются в порядке, основанном на индексе таблицы.
Однако я видел случаи, когда значения не возвращались в порядке индекса. Похоже, что строки в кэше могут возвращаться до строк с диска, даже если строки на диске являются первыми в индексе.