سؤال

أنا أستخدم BCP لاستيراد ملف ثابت إلى قاعدة بيانات SQL Server 2005.

أنا في مشكلة مع حقول DateTime.

تم تحديد حقل ملف التنسيق الخاص بي على النحو التالي:

<COLUMN SOURCE="15" NAME="DATEOFSERVICE" xsi:type="SQLDATETIME"/>

يحتوي ملف البيانات الخاص بي على تواريخ مهيمة ك: 1982010

ومع ذلك، فإن بعض (كثير) مليء 00000000

فشل تواريخ 00000000 في استيرادها بشكل صحيح بسبب عدم تطابق النوع.

هل هناك طريقة لتحديد ملف التنسيق الخاص بي للتعامل مع تواريخ Zeroed؟ أو طريقة لإخبار BCP بإدخال افتراضي إذا كان يأتي عبر 00000000؟

هل كانت مفيدة؟

المحلول

أود أن أقترح عليك إنشاء جدول مؤقت حيث يتم تحديد عمود التاريخ كوعي بيانات Varchar. ثم، BCP بياناتك إلى جدول TEMP. بعد تحميل البيانات إلى جدول TEMP، يمكنك فرك التاريخ (استبدال 00000000 مع NULL، على سبيل المثال). أخيرا، بمجرد التحقق من صحة بياناتك، انسخها إلى الجداول الحقيقية.

قد لا يعمل هذا بشكل جيد لملفات البيانات الكبيرة للغاية، لكنني لست متأكدا من عدم التأكد من أنك قد تحقق هذا أيضا.

نصائح أخرى

سأستخدم OpenRowset. مع بيان الحالة للقيام الترجمة أثناء استيراد البيانات.

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