لماذا لا BCP الناتج اغية عندما يحتوي العمود سلسلة فارغة وسلسلة فارغة عند العمود باطل؟

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

  •  10-07-2019
  •  | 
  •  

سؤال

وهذا الذي شدني إلى سلوك غريب حقا، وقضيت بعض الوقت لفحص الخلل في قانون بلدي قبل لقد وجدت هذا

و"نسخ خارج من جدول قاعدة البيانات أو عرض إلى ملف. إذا قمت بتحديد ملف موجود، تتم الكتابة فوق الملف. عند استخراج البيانات، لاحظ أن الأداة المساعدة bcp تمثل سلسلة فارغة باعتبارها لاغية وسلسلة فارغة ك سلسلة فارغة." (من http://msdn.microsoft.com/en-us/library/ms162802 .aspx اتصال )

ومن الواضح أن هذا سمح لي لإصلاح مشكلتي ولكن أي شخص يمكن أن يفكر أو لا أحد يعرف السبب في هذا هو الحال؟

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

المحلول

ولقد كان بعض الوقت، ولكن أنا متأكد من انها التوافق الوراء / تراث يعود إلى SQL Server 6.5

وSQL خادم 6.5 لا يمكن تخزين سلسلة فارغة: كان هناك دائما مسافة واحدة. هذا تغير مع SQL 7

وهكذا '' -> NULL و' ' -> '' هو الصحيح من وجهة نظر التاريخ القديم.

نصائح أخرى

SELECT ARTICULO as Articulo, 
        case when rtrim(CCOLOR) = '' then null else rtrim(CCOLOR) end as Color, 
        case when rtrim(TALLE) = '' then null else rtrim(TALLE) end as Talle,
from precios

وإرسال null في مكان فارغ.

وأجد الحل الأفضل هنا:

HTTPS: // بايت كوم / الموضوع / SQL الخادم / الإجابات / 143738-BCP-إدخال فارغ مساحة فارغة سلسلة

<اقتباس فقرة>   

ولقد وجدت عمل حول، وذلك باستخدام بنية حالة في الاستعلام SQL ل   تغيير سلسلة فارغة لاغية. وBCP بدوره إخراج الناتجة   لاغية كما فارغة!   شكرا لمساعدتك.   اريك

ويرتبط هذا إلى قسم "الافتراضي القيم" لBCP:

<وأ href = "https://docs.microsoft.com/en-us/sql/relational-databases/import-export/keep-nulls-or-use-default-values-during-bulk-import- مزود خادم "يختلط =" نوفولو noreferrer "> https://docs.microsoft.com/en-us/sql/relational-databases/import-export/keep-nulls-or-use-default-values-during-bulk والاستيراد-SQL خادم

<اقتباس فقرة>   

وعلى سبيل المثال، إذا كان هناك حقل فارغ في ملف بيانات، يتم تحميل القيمة الافتراضية للعمود بدلا من ذلك.

وعليك أن تفكر مرة أخرى إلى أيام حيث استيراد ملفات النص العادي من أنظمة غريبة أخرى. BCP يترجم '' بأنها "غير معرف" (= البيانات الناقصة) ويحدد NULL في قاعدة البيانات (= البيانات الناقصة). على العكس من ذلك فارغة من قاعدة البيانات يجب أن يكون '' لأنظمة أخرى.

لحصول على البيانات الحقيقية 'للخروج من قاعدة بيانات استخدام رمز التبديل -k:

<وأ href = "https://docs.microsoft.com/en-us/sql/relational-databases/import-export/keep-nulls-or-use-default-values-during-bulk-import- مزود خادم # keep_nulls "يختلط =" نوفولو noreferrer "> https://docs.microsoft.com/en-us/sql/relational-databases/import-export/keep-nulls-or-use-default-values-during -bulk والاستيراد-SQL خادم # keep_nulls

<اقتباس فقرة>   

والتصفيات التالية تحدد أن حقل فارغ في ملف البيانات يحتفظ قيمته فارغة خلال العملية الأكبر والاستيراد، بدلا من وراثة قيمة افتراضية (إن وجدت) للأعمدة الجدول.

وبعد ذلك لديك 0x0 ASCII الخاص بك في ملف / قاعدة البيانات الخاصة بك.

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