كيفية تصدير بيانات SSIS على معيار SQL واستيرادها مع إدراج بالجملة على SQL Express؟

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

سؤال

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

Msg 4866, Level 16, State 8, Line 1 The bulk load failed. The column is too long in the data file for row 1, column 5. Verify that the field terminator and row terminator are specified correctly.

الملف الذي تم إنشاؤه هو ASCII (1252) مع Char (09) (علامة التبويب) بين الحقول و Char (0D) Char (0A) إنهاء خط (أعتقد أن r n).

هذا هو ملف التنسيق (العقيد الرابع عرض العقيد):

9.0
5
1 SQLCHAR 0 12 "\t" 1 Record_ID ""
2 SQLCHAR 0 498 "\t" 2 Filename SQL Latin1 General CP1 CI AS
3 SQLCHAR 0 498 "\t" 3 Path SQL Latin1 General CP1 CI AS
4 SQLCHAR 0 12 "\t" 4 Width ""
5 SQLCHAR 0 12 "\r\n" 5 Height ""

بيانات العينة بدءا من أعلى الملف:

Record_ID Filename Path Width Height
1437 BreadCakeCooknPie.eps G:\BakedGoods\BreadCakeCooknPie.eps 595 647
1438 CakeChocolateRoses.eps G:\BakedGoods\CakeChocolateRoses.eps 1200 848

يمكنني استيرادها مع رمز T-SQL التالي:

bulk insert item_table from 'Item_Table.txt' with
( FORMATFILE='Item_Table.fmt', FIRSTROW=2)

حقول الجدول هي:

[Record_ID] [int] NULL,
[Filename] [nvarchar](249) NULL,
[Path] [nvarchar](249) NOT NULL,
[Width] [int] NULL,
[Height] [int] NULL

أي عمليات الكتابة المتاحة؟ أي فكرة عن كيفية إصلاح الخطأ؟ أي فكرة عن كيفية الاستيلاء على ملف التنسيق الذي أنشأته SSIS؟ أي أفكار أخرى؟

شكرا جزيلا للنظر في سؤالي.

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

المحلول 3

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

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

لا يزال المحتوى المصدر من SSIS غير نفسه، ولكنه قريب بما يكفي لاستيراده. على سبيل المثال، عندما قام BCP بتصدير البيانات، فإنه وضعت .000 خلف حقول التاريخ و .0 خلف الحقول الرقمية (تعويم، إلخ).

ملف التنسيق النهائي الذي عمل أدناه. لاحظ أن جميع الحقول هي SQLCHAR على الرغم من أن بعضها Unicode، أن جميع الأحجام خاطئة (INT هي 10 ولكن لديها 12)، (النص طول 249 ولكن لديه 498)، و (اضطررت إلى وضع جميع الحقول في ، ليس فقط تلك التي أردت استيرادها. لم يكن تخطي الحقول بشكل صحيح.)

عالم مجنون. أي أفكار لماذا سيكون هذا هو الحال؟

9.0
29
1 SQLCHAR 0 12 "\t" 1 Record_ID ""
2 SQLCHAR 0 498 "\t" 2 Filename SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 498 "\t" 3 Path SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 498 "\t" 4 Extension_Win SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 498 "\t" 5 Short_Filename_Win SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 498 "\t" 6 Volume SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 24 "\t" 7 Created ""
8 SQLCHAR 0 24 "\t" 8 Last_Modified ""
9 SQLCHAR 0 24 "\t" 9 Cataloged ""
10 SQLCHAR 0 24 "\t" 10 Last_Updated ""
11 SQLCHAR 0 12 "\t" 11 File_Size ""
12 SQLCHAR 0 498 "\t" 12 Mac_File_Type SQL_Latin1_General_CP1_CI_AS
13 SQLCHAR 0 498 "\t" 13 Mac_Creator SQL_Latin1_General_CP1_CI_AS
14 SQLCHAR 0 498 "\t" 14 Mac_Zone SQL_Latin1_General_CP1_CI_AS
15 SQLCHAR 0 12 "\t" 15 Thumbnail_Size ""
16 SQLCHAR 0 12 "\t" 16 Color_Mode ""
17 SQLCHAR 0 30 "\t" 17 Horizontal_Resolution ""
18 SQLCHAR 0 30 "\t" 18 Vertical_Resolution ""
19 SQLCHAR 0 12 "\t" 19 Width ""
20 SQLCHAR 0 12 "\t" 20 Height ""
21 SQLCHAR 0 12 "\t" 21 MultipageCount ""
22 SQLCHAR 0 12 "\t" 22 PlaceHolder ""
23 SQLCHAR 0 12 "\t" 23 Watermarked ""
24 SQLCHAR 0 12 "\t" 24 FileStoreID ""
25 SQLCHAR 0 498 "\t" 25 Directory_Path SQL_Latin1_General_CP1_CI_AS
26 SQLCHAR 0 12 "\t" 26 RID ""
27 SQLCHAR 0 498 "\t" 27 Cataloged_By SQL_Latin1_General_CP1_CI_AS
28 SQLCHAR 0 498 "\t" 28 Updated_By SQL_Latin1_General_CP1_CI_AS
29 SQLCHAR 0 0 "\r\n" 29 File_Description SQL_Latin1_General_CP1_CI_AS

نصائح أخرى

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

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

يرجى إعلامنا أين هو في الواقع كسر تدفق البيانات.

هل فكرت في تشغيل تصدير SSIS الخاص بك في شكل محدد أو فاصلة محدد؟ يمكن أن تكون هناك مشكلات مع كيفية معالجة حرف علامة التبويب بين التصدير والاستيراد.

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

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