سؤال

وقد أي شخص كان قادرا على الحصول على متغير سجل طول النص ملف (CSV) إلى SQL Server عبر SSIS?

لقد حاولت مرارا وتكرارا الحصول على ملف CSV إلى جدول ملقم SQL باستخدام SSIS ، حيث ملف الإدخال متفاوتة أطوال قياسية.عن هذا السؤال ، مختلفين سجل أطوال 63 و 326 بايت.جميع أطوال قياسية سيتم استيرادها إلى نفس 326 بايت عرض الجدول.

هناك أكثر من 1 مليون سجلات الاستيراد.
ليس لدي أي سيطرة إنشاء ملف الاستيراد.
يجب استخدام SSIS.
لقد أكدت مع MS أن هذا قد تم الإبلاغ عن الخلل.لقد حاولت العديد من الحلول.معظمها حيث كنت في محاولة كتابة التعليمات البرمجية المخصصة لاعتراض سجل أنا لا يمكن أن يبدو للحصول على هذا العمل كما أريد.

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

المحلول

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

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

قضية بلدي كان موفر كان يستخدم '000000' كما لا تاريخ المتاحة آخر coloumn كان الحشو/تقليم المسألة.

نصائح أخرى

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

يبدو وكأنه كنت تستخدم عرض ثابت الشكل الذي لا يصح ملفات CSV (منذ لديك متغير طول العمود) ، أو ربما كنت قد بشكل غير صحيح تعيين عمود محدد.

نفس القضية.في حالتي, هدف ملف CSV لديه رأس و تذييل السجلات مع صيغ مختلفة تماما من الجسم الملف.رأس/تذييل تستخدم للتحقق من اكتمال معالجة ملف (تاريخ/مرات, سجل التهم ، كمية المجاميع - "الاختباري" بأي اسم آخر ...).هذا هو مشترك تنسيق الملفات من "المركزية" البيئات, و على الرغم من أنني لم أبدأ على ذلك ولكن أتوقع أن يكون استخدام البرمجة النصية إلى تجريدها من رأس/تذييل الصفحة ، حفظ بقية كملف جديد, عملية الملف الجديد ثم القيام التحقق من الصحة.لا يمكن أن نتوقع بالضبط MS أن يكون هذا الخروج من مربع (لكن بالتأكيد سيكون جميل, أليس كذلك؟).

يمكنك كتابة برنامج نصي المهمة باستخدام C# من خلال تكرار كل خط و لوح مع كمية مناسبة من الفواصل لوحة البيانات.هذا يفترض بالطبع أن جميع البيانات ينسجم مع الأعمدة المناسبة.

أولا-هاء.كما يمكنك قراءة كل سجل ، يمكنك "العد" عدد من الفواصل.ثم مجرد إلحاق X عدد الفواصل إلى نهاية سجل حتى العدد الصحيح من الفواصل.

Excel لديه مشكلة التي تسبب هذا النوع من الملفات يتم إنشاؤها عند التحويل إلى ملف CSV.

إذا كنت تستطيع أن تفعل هذا "باليد" أفضل طريقة لحل هذا إلى فتح الملف في Excel إنشاء عمود في "النهاية" من المحضر ، وملء كل الطريق مع 1s أو بعض الحرف الأخرى.

سيئة, ولكن يمكن حل سريع.

إذا لم يكن لديك القدرة على القيام بذلك, يمكنك أن تفعل الشيء نفسه برمجيا كما هو موضح أعلاه.

لماذا لا يمكنك فقط استيراد على أنها اختبار ملف تعيين عمود delimeter إلى " ، " والصف delimeter إلى CRLF?

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