Поддерживает ли bcp out порядок строк при экспорте в файл данных?
-
19-09-2019 - |
Вопрос
Мне нужно экспортировать данные в файл из огромной таблицы, содержащей только один столбец, но тысячи строк, где важен порядок следования строк.Я использую команду bcp, как показано ниже
bcp DBNAME.dbo.tblName out mydata.dat -Uusername -Ppassword -c
Я проверил таблицу, содержащую 10 строк, и вижу, что порядок строк сохраняется в файле данных.Но могу ли я предположить, что bcp сохранит порядок, если количество строк, скажем, превысит 10000?
Решение
Я думаю, это произойдет, если вы используете инструкцию 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 .
Как правило, значения возвращаются в порядке, основанном на индексе в таблице.
Однако я видел случаи, когда значения возвращались не в порядке индексации.Похоже, что строки в кэше могут быть возвращены раньше строк с диска, даже если строки на диске являются первыми в индексе.