SSIS แสดงผลสายอักขระ Unicode เป็นโค้ดอักขระ Shift-JIS ไปยังแฟ้มข้อความ

วันที่สร้างเพจ :

รูปแบบที่ส่งผลให้เกิดข้อผิดพลาด

สมมติว่าคอลัมน์ชนิด nvarchar ในตารางบน SQL Server มีสตริงที่ไม่สามารถใช้ใน Shift-JIS ได้ โดยวิธีการถ้าคุณใส่อักขระเหล่านี้ในคอลัมน์ varchar มีอักขระที่ไม่สามารถใช้ได้เช่นคอลัมน์ "ColumnShiftJis" ทางด้านขวา เปลี่ยนใหม่

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

ใน SSIS โฟลว์จะถูกตั้งค่าให้อ่านข้อมูลจากตารางก่อนหน้าดังที่แสดงในรูปและแสดงผลเป็นไฟล์ข้อความ

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

สมมติว่าคุณต้องการแสดงผลเป็นไฟล์ CSV เนื่องจาก Shift-JIS มักใช้ในไฟล์ CSV ให้ตั้งค่าการเข้ารหัสอักขระของไฟล์ข้อความเป็น Shift-JIS

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

ถ้าคุณดําเนินการกับการตั้งค่านี้ จะเกิดข้อผิดพลาดขึ้นที่เวลาของเอาต์พุต

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

ข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้จะปรากฏขึ้น:

エラー内容

แฟ้มผลลัพธ์จะถูกขัดจังหวะเมื่อเกิดข้อผิดพลาดไปครึ่งทาง

出力されたテキスト

หากคุณพยายามแสดงผลตามที่เป็นอยู่มันจะเป็นข้อผิดพลาดดังนั้นลองรวม "การแปลงข้อมูล" ไว้ตรงกลาง

データ変換 追加

แปลงชนิดข้อมูลจาก "DT_WSTR" เป็น "DT_STR" และทําให้เป็นฟอร์มที่สามารถแสดงผลเป็น Shift-JIS ได้

「DT_WSTR」から「DT_STR」に変換

อย่างไรก็ตามหากคุณดําเนินการนี้คุณจะได้รับข้อผิดพลาด ทั้งนี้เนื่องจาก SSIS ล้มเหลวในการประมวลผลโดยนัยอย่างเคร่งครัดซึ่งทําให้ข้อมูลหายไป ถ้าคุณต้องการให้ SSIS ดําเนินการประมวลผลแบบตัวพิมพ์ข้อความ คุณจะต้องระบุการแทนที่อักขระสําหรับอักขระทั้งหมดอย่างชัดเจน

データ変換エラー

วิธีแก้ไขปัญหาชั่วคราว

มีวิธีเปลี่ยนชนิดของข้อความโดยใช้ SQL เมื่ออ่านจากตารางในฐานข้อมูล ถ้าเป็น SQL จะเป็น SQL Server engine ที่เรียกใช้ไม่ใช่ SSIS เพื่อให้สามารถทํางานโดยไม่มีข้อผิดพลาด โดยวิธีการที่ตัวละครทั้งหมดที่ไม่สามารถใช้ใน Shift-JIS คือ "?" แปลงเป็น: นี่คือข้อกําหนดด้าน SQL Server แม้ว่าจะไม่ใช่ SSIS แต่ผลลัพธ์จะคล้ายกันสําหรับทุกระบบที่ใช้ SQL Server

เปิดตัวแปล ADO NET และเปลี่ยนโหมดการเข้าถึงข้อมูลเป็นคําสั่ง SQL ตอนนี้คุณสามารถป้อน SQL ได้แล้ว ให้เขียนคําสั่ง Select เพื่อดึงข้อมูลจากฐานข้อมูล ข้อความที่มีอักขระที่ไม่สามารถใช้ใน Shift-JIS ถูกบังคับให้แปลงเป็น varchar โดยใช้แคสต์

SQL で varchar に変換

เนื่องจากอักขระที่ไม่สามารถใช้ใน Shift-JIS ได้ถูกเอาออกไปแล้วในขณะที่ข้อมูลไหลไปยัง SSIS การประมวลผลจึงสามารถส่งผ่านได้ตามที่เป็นอยู่

処理成功

คุณจะเห็นว่าข้อความถูกเขียนไปยัง CSV เรียบร้อยแล้ว นอกจากนี้ตัวละครทั้งหมดที่ไม่สามารถใช้ใน Shift-JIS คือ "?" คุณจะเห็นว่ามันถูกแปลงเป็น:

出力されたテキスト