هل يحتفظ BCP خارج ترتيب الصف أثناء التصدير في ملف بيانات؟

StackOverflow https://stackoverflow.com/questions/2015885

  •  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) سيعود القيم بترتيب معين أو نفس الترتيب ما لم تستخدم جملة الطلب.

بشكل عام، يتم إرجاع القيم بالترتيب بناء على فهرس على الطاولة.

ومع ذلك، فقد رأيت حالات لا يتم إرجاع القيم في ترتيب الفهرس. يبدو أن الصفوف الموجودة في ذاكرة التخزين المؤقت قد يتم إرجاعها قبل الصفوف من القرص حتى إذا كانت الصفوف الموجودة على القرص هي الأولى في الفهرس.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top