SSIS یک رشته یونیکد را به عنوان یک کد کاراکتر Shift-JIS به یک فایل متنی خروجی می دهد

تاریخ ایجاد صفحه :

الگوهایی که منجر به خطا می شوند

فرض کنید که یک ستون از نوع nvarchar در یک جدول بر روی SQL سرور دارای رشته ای است که نمی تواند در Shift-JIS استفاده شود. به هر حال، اگر این کاراکترها را در ستون وارچار قرار داده باشید، کاراکترهایی وجود دارند که نمی توان از آن ها استفاده کرد، مانند ستون "ColumnShiftJis" در سمت راست. جايگزينش کن .

Unicode 文字をデータベースのテーブルに入れる

در SSIS، جریان تنظیم می شود تا داده های جدول قبلی را همان طور که در شکل نشان داده شده است بخواند و آن را به یک فایل متنی خروجی دهد.

テキストファイルへ出力する様にフローを構築

فرض کنید که شما می خواهید آن را به عنوان یک فایل CSV خروجی. از آنجا که Shift-JIS است که اغلب در فایل های CSV استفاده می شود، مجموعه ای از کاراکتر encoding از فایل متنی به Shift-JIS.

文字コードを Shift-JIS に設定

اگر با این تنظیم اجرا کنید، خطایی در زمان بندی خروجی رخ خواهد داد.

テキストファイル書き込み時にエラー

یک پیام خطا شبیه به موارد زیر ظاهر می شود:

エラー内容

فایل خروجی نیز در نیمه راه از طریق زمانی که خطا رخ داده است قطع خواهد شد.

出力されたテキスト

اگر شما سعی می کنید به خروجی به عنوان آن است، آن را یک خطا خواهد بود، بنابراین سعی کنید گنجاندن "تبدیل داده ها" در وسط.

データ変換 追加

نوع داده را از "DT_WSTR" به "DT_STR" تبدیل کنید و آن را به فرمی تبدیل کنید که می تواند خروجی به Shift-JIS باشد.

「DT_WSTR」から「DT_STR」に変換

با این حال، اگر این کار را نیز اجرا کنید، خطا دریافت خواهید کرد. این به این دلیل است که SSIS به شدت با شکست مواجه پردازش ضمنی است که باعث می شود داده ها از دست رفته است. اگر می خواهید SSIS پردازش های متنی را انجام دهد، باید به صراحت جایگزینی کاراکتر را برای همه کاراکترها مشخص کنید.

データ変換エラー

راه حل

راهی برای تغییر نوع متن با استفاده از SQL در هنگام خواندن از یک جدول در یک پایگاه داده وجود دارد. اگر SQL باشد، موتور SQL Server است که آن را اجرا می کند، نه SSIS، بنابراین می تواند بدون خطا اجرا شود. به هر حال، تمام شخصیت هایی که نمی توانند در Shift-JIS مورد استفاده قرار گیرند، «؟» هستند. تبدیل به: این مشخصات سمت SQL سرور است. حتی اگر SSIS ن باشد، نتیجه برای تمام سیستم هایی که از SQL Server استفاده می کنند مشابه است.

مترجم ADO NET را باز کنید و حالت دسترسی به داده ها را به SQL Command تغییر دهید. حالا که می توانید SQL را وارد کنید، یک بیانیه Select بنویسید تا داده ها را از پایگاه داده بازیابی کنید. متنی که شامل کاراکتر هایی است که در Shift-JIS قابل استفاده نیست به زور با استفاده از cast به وارچار تبدیل می شود.

SQL で varchar に変換

از آنجا که کاراکترهای قابل استفاده در Shift-JIS در حال حاضر در زمان جریان داده ها به SSIS حذف شده اند، پردازش می تواند به عنوان آن منتقل می شود.

処理成功

شما می توانید ببینید که متن با موفقیت به CSV نوشته شده است. همچنین، تمام کاراکتر هایی که در Shift-JIS قابل استفاده نیست،"؟" هستند. شما می توانید ببینید که آن را تبدیل شده است به:

出力されたテキスト