IT-Swarm.Net

تم اقتطاع النص أو عدم وجود حرف واحد أو أكثر في صفحة الرموز الهدف عند الاستيراد من ملف Excel

لديّ ملف Excel يحتوي على أربعة أعمدة نصية: يسمى أحدها ShortDescription الذي يحتوي على أطول قيمة. قمت بإنشاء جدول في قاعدة بيانات SQL Server 2008 ، مع أربعة أعمدة ويتم تعيين نوع العمود ShortDescription إلى NvarChar (Max).

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

حاولت مسح بيانات العمود ، وقد نجحت (لذلك تأكدت من أن المشكلة موجودة في عمود ShortDescription). لقد حاولت نسخ البيانات بأكملها إلى كتاب عمل Excel آخر ، ولا زلت غير محظوظ.

أيه أفكار ؟؟؟

55
Nour Sabouny

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

إذا كان الأمر كذلك ، فربما تكمن المشكلة في قيام SSIS باختبار عدد من الصفوف في بداية جدول البيانات الخاص بك عندما يقوم بإنشاء مصدر Excel. إذا لم تلاحظ في عمود [ShortDescription] أي شيء كبير جدًا ، فسيتم افتراضيًا في عمود نص من 255 حرفًا.

لذلك لاستيراد البيانات من عمود يحتوي على صفوف تحتوي على كميات كبيرة من البيانات بدون اقتطاع ، هناك خياران:

  1. يجب التأكد من أن العمود [ShortDescription] في واحد على الأقل من الصفوف التي تم أخذ عينات منها يحتوي على قيمة أطول من 255 حرفًا. إحدى طرق القيام بذلك هي استخدام الدالة REPT () ، على سبيل المثال = REPT ('z' ، 4000) ، والتي ستنشئ سلسلة من 4000 حرف 'z'.
  2. يجب عليك زيادة عدد الصفوف التي تم أخذ عينات منها بواسطة برنامج تشغيل Jet Excel لتضمين مثل هذا الصف. يمكنك زيادة عدد الصفوف التي تم أخذ عينات منها عن طريق زيادة قيمة TypeGuessRows ضمن HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel (إذا كان نظامك x64 ثم تحت مفتاح التسجيل HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel).

يمكنك رؤية المزيد من المعلومات في هذين الرابطين:

لمزيد من التوضيح ، تنشئ SSIS 3 كائنات خلف الكواليس من المعالج وكائن مصدر بيانات Excel وكائن وجهة جدول SQL ومشغل تدفق البيانات بينهما. يعرّف كائن مصدر Excel البيانات المصدر ويتواجد بشكل مستقل عن الكائنين الآخرين. لذلك عند إنشائه ، يتم أخذ العينات التي وصفتها وتحديد حجم العمود المصدر. لذلك بحلول الوقت الذي ينفّذ فيه مشغل تدفق البيانات ويحاول سحب البيانات من Excel لوضعها في الجدول الخاص بك ، فإنه يبحث بالفعل في مصدر بيانات يقتصر على 255 حرفًا.

66
TetonSig

كان لدي هذه المشكلة عند الاستيراد من ملف مسطح محدد في SQL Server. كان الحل هو تحديث قيمة "OutputColumnWidth" للعمود المخالف (من رسالة الخطأ). في نموذج "اختيار مصدر بيانات" في معالج الاستيراد ، كان المصدر هو الملف الثابت. في أقصى اليسار ، اختر "متقدم". يمكنك بعد ذلك تعيين خصائص الأعمدة الفردية. في حالتي ، تم تعطيل "OutputColumnWidth" لمعظم أعمالي إلى "50". لقد قمت ببساطة بتحديثه إلى قيمة أكبر لن يتم اقتطاع القيمة من الملف الثابت.

enter image description here

32
Dean

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

8
Kalel Wade

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

تم حفظ الملف النصي بتنسيق UTF8.

اعداداتي:

في الخيار العام (لم يغير أي شيء):

- Locale: English (United States) 
- Unicode: Unchecked
- Code Page: 65001 (UTF-8)

هناك خيار متقدم على اليسار

- DataType (for column): Unicode String [DT_WSTR] (changed)
- OutputColumnWidth: 4000 (that's the maximum) (changed)

في مراجعة تعيين نوع البيانات

- On Error: Ignore
- On Truncation: Ignore

كان العمود المستهدف عرضي = 50.

لم أحصل على أي أخطاء في هذه الإعدادات.

6
live-love

بالنسبة لي ، ساعدني هذا الرابط: https://support.Microsoft.com/en-us/kb/189897

  1. انسخ الصف الذي يحتوي على قيمة خلية> 255 حرفًا إلى بداية Excel ، اجعل هذا الصف هو الصف الأول في Excel
  2. تغيير قيمة التسجيل من الرابط أعلاه.
1
Jaydeep Shil

يوجد موقع بديل لمكون التسجيل يلزم تغييره لحل هذه المشكلة.

إذا لم تتمكن من العثور عليه في

ابدأ-> تشغيل> RegEdit-> HKEY_LOCAL_MACHINE\SOFTWARE\\ 4.0\محركات مايكروسوفت\جت\إكسل

ثم انظر في

ابدأ -> RUN–> RegEdit–> HKEY_LOCAL_MACHINE -> البرنامج -> Wow6432Node -> Microsoft -> Jet -> 4.0 -> محركات -> Excel

1
Charles Mulwa