Το SSIS εξάγει μια συμβολοσειρά Unicode ως κωδικό χαρακτήρα Shift-JIS σε ένα αρχείο κειμένου

Ημερομηνία δημιουργίας σελίδας :

Μοτίβα που οδηγούν σε σφάλματα

Ας υποθέσουμε ότι μια στήλη τύπου nvarchar σε έναν πίνακα στον SQL Server έχει μια συμβολοσειρά που δεν μπορεί να χρησιμοποιηθεί στο Shift-JIS. Παρεμπιπτόντως, εάν τοποθετήσετε αυτούς τους χαρακτήρες στη στήλη varchar, υπάρχουν χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν, όπως η στήλη "ColumnShiftJis" στα δεξιά. Αντικατέστησε το.

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

Στο SSIS, η ροή έχει ρυθμιστεί να διαβάζει δεδομένα από τον προηγούμενο πίνακα, όπως φαίνεται στην εικόνα και να τα εξάγει σε ένα αρχείο κειμένου.

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

Ας υποθέσουμε ότι θέλετε να το εξάγετε ως αρχείο CSV. Δεδομένου ότι shift-JIS χρησιμοποιείται συχνά σε αρχεία CSV, ορίστε την κωδικοποίηση χαρακτήρων του αρχείου κειμένου σε Shift-JIS.

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

Εάν εκτελέσετε με αυτήν τη ρύθμιση, θα παρουσιαστεί σφάλμα κατά το χρόνο εξόδου.

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

Εμφανίζεται ένα μήνυμα σφάλματος παρόμοιο με το ακόλουθο:

エラー内容

Το αρχείο εξόδου θα διακοπεί επίσης στα μισά του 2019, όταν παρουσιάστηκε το σφάλμα.

出力されたテキスト

Εάν προσπαθήσετε να εξάγετε ως έχει, θα είναι σφάλμα, οπότε δοκιμάστε να ενσωματώσετε τη "μετατροπή δεδομένων" στη μέση.

データ変換 追加

Μετατρέψτε τον τύπο δεδομένων από "DT_WSTR" σε "DT_STR" και μετατρέψτε τον σε μια φόρμα που μπορεί να είναι έξοδος σε Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Ωστόσο, εάν εκτελέσετε επίσης αυτό, θα λάβετε ένα σφάλμα. Αυτό συμβαίνει επειδή η SSIS αποτυγχάνει αυστηρά σιωπηρή επεξεργασία που προκαλεί την απώλεια δεδομένων. Εάν θέλετε το SSIS να εκτελεί επεξεργασία χωρίς κείμενο, θα πρέπει να καθορίσετε ρητά την αντικατάσταση χαρακτήρων για όλους τους χαρακτήρες.

データ変換エラー

Λύσεις

Υπάρχει τρόπος να αλλάξετε τον τύπο κειμένου χρησιμοποιώντας SQL κατά την ανάγνωση από έναν πίνακα σε μια βάση δεδομένων. Εάν είναι SQL, είναι ο μηχανισμός SQL Server που το εκτελεί, όχι SSIS, ώστε να μπορεί να εκτελείται χωρίς σφάλματα. Παρεμπιπτόντως, όλοι οι χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS είναι ";" Μετατράπηκε σε: Αυτή είναι μια δευτερεύουσα προδιαγραφή του SQL Server. Ακόμα και αν δεν είναι SSIS, το αποτέλεσμα είναι παρόμοιο για όλα τα συστήματα που χρησιμοποιούν τον SQL Server.

Ανοίξτε το ADO NET Translator και αλλάξτε τη λειτουργία πρόσβασης δεδομένων σε εντολή SQL. Τώρα που μπορείτε να εισαγάγετε SQL, γράψτε μια πρόταση Select για να ανακτήσετε δεδομένα από τη βάση δεδομένων. Το κείμενο που περιέχει χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS μετατρέπεται με τη χρήση του varchar με τη χρήση του cast.

SQL で varchar に変換

Δεδομένου ότι οι χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS έχουν ήδη καταργηθεί κατά τη στιγμή της ροής δεδομένων στο SSIS, η επεξεργασία μπορεί να μεταβιβαστεί ως έχει.

処理成功

Μπορείτε να δείτε ότι το κείμενο έχει γραφτεί με επιτυχία στο CSV. Επίσης, όλοι οι χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS είναι ";" Μπορείτε να δείτε ότι έχει μετατραπεί σε:

出力されたテキスト