كيفية تصدير ملف ثابت مع صفوف مختلفة باستخدام جهاز مباحث أمن الدولة؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي الجداول شجرة، وخدمة العملاء، والفاتورة InvoiceRow مع العلاقات القياسية.

وهذه لا بد لي من تصدير في ملف طول الحقل ثابت واحد مع أول حرفين من كل صف تحديد نوع التوالي. أنواع الخلاف ومواصفات مختلفة.

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

وتحرير:

وإخراج يجب أن يكون لديك:

Customer  
Invoice  
Rows  
Customer  
Invoice  
Rows  
and so on
هل كانت مفيدة؟

المحلول

والشعور الغريزي الخاص على القيام بذلك باستخدام مكون سيناريو الوجهة هو الصحيح. للأسف، هذا السيناريو لا رقص الجاز مع جهاز مباحث أمن الدولة أيضا. أنا لا أعتبر هذه حزمة المبتدئين. إذا كان يجب استخدام جهاز مباحث أمن الدولة ثم كنت أبدأ الداخلية انضمام جميع البيانات حتى لا يكون هناك صف واحد لكل InvoiceRow، الذي يحتوي على البيانات المطلوبة من جميع الجداول الثلاثة.

وCustomerCols، InvoiceCols، RowCols

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

إنشاء وجهة مع مكون سيناريو للحصول على مزيد من المعلومات على الوجهة النصي.

وتجربتي تبين أن وجهات السيناريو يمكن أن يكون الأداء الجيد.

نصائح أخرى

وأود أن تجنب كتابة سيناريو الوجهة، ومجرد استخدام سيناريو تحويل + شقة الوجهة ملف. بهذه الطريقة، يمكنك التركيز على الناتج المنطقي (سلاسل البيانات)، بينما يسمح جهاز مباحث أمن الدولة للقيام الكتابة الفعلية إلى ملف (قد يكون قليلا أكثر كفاءة، بالإضافة إلى أن تركز على عملك، وليس على الكتابة إلى الملفات).

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

وبعد ذلك القيام النصي: الحفاظ على القيم تشغيل من العملاء الحاليين والفاتورة، خرج منها عند تغيير، خرج InvoiceRow على كل المدخلات. شيء من هذا القبيل:

if (this.CustomerID != InputBuffer.CustomerID) {
  this.CustomerID = InputBuffer.CustomerID;
  OutputBuffer.AddRow();
  OutputBuffer.OutputColumn = "Customer: " + InputBuffer.CustomerID + " " + InputBuffer.CustomerName;
}
// repeat the same code for Invoice

OutputBuffer.AddRow();
OutputBuffer.OutputColumn = "InvoiceRow: " + InputBuffer.InvoiceRowPrice;

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

ومعالجة الخاص بك ثلاثة جداول بحيث مخرجات كلها مناسبة لملف الإخراج الخاص بك (بما في ذلك نوع التسمية صف). سيكون لديك للقيام بذلك في ثلاثة مسارات تدفق منفصلة في تدفق البيانات الخاصة بك، ثم جعل الصفوف معا في الاتحاد كل عنصر تدفق البيانات. من هناك، معالجتها حسب الحاجة لإنشاء ملف الإخراج الخاص بك.

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