Το SSIS εξάγει μια συμβολοσειρά Unicode ως κωδικό χαρακτήρα Shift-JIS σε ένα αρχείο κειμένου
Μοτίβα που οδηγούν σε σφάλματα
Ας υποθέσουμε ότι μια στήλη τύπου nvarchar σε έναν πίνακα στον SQL Server έχει μια συμβολοσειρά που δεν μπορεί να χρησιμοποιηθεί στο Shift-JIS. Παρεμπιπτόντως, εάν τοποθετήσετε αυτούς τους χαρακτήρες στη στήλη varchar, υπάρχουν χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν, όπως η στήλη "ColumnShiftJis" στα δεξιά. Αντικατέστησε το.
Στο SSIS, η ροή έχει ρυθμιστεί να διαβάζει δεδομένα από τον προηγούμενο πίνακα, όπως φαίνεται στην εικόνα και να τα εξάγει σε ένα αρχείο κειμένου.
Ας υποθέσουμε ότι θέλετε να το εξάγετε ως αρχείο CSV. Δεδομένου ότι shift-JIS χρησιμοποιείται συχνά σε αρχεία CSV, ορίστε την κωδικοποίηση χαρακτήρων του αρχείου κειμένου σε Shift-JIS.
Εάν εκτελέσετε με αυτήν τη ρύθμιση, θα παρουσιαστεί σφάλμα κατά το χρόνο εξόδου.
Εμφανίζεται ένα μήνυμα σφάλματος παρόμοιο με το ακόλουθο:
Το αρχείο εξόδου θα διακοπεί επίσης στα μισά του 2019, όταν παρουσιάστηκε το σφάλμα.
Εάν προσπαθήσετε να εξάγετε ως έχει, θα είναι σφάλμα, οπότε δοκιμάστε να ενσωματώσετε τη "μετατροπή δεδομένων" στη μέση.
Μετατρέψτε τον τύπο δεδομένων από "DT_WSTR" σε "DT_STR" και μετατρέψτε τον σε μια φόρμα που μπορεί να είναι έξοδος σε Shift-JIS.
Ωστόσο, εάν εκτελέσετε επίσης αυτό, θα λάβετε ένα σφάλμα. Αυτό συμβαίνει επειδή η SSIS αποτυγχάνει αυστηρά σιωπηρή επεξεργασία που προκαλεί την απώλεια δεδομένων. Εάν θέλετε το SSIS να εκτελεί επεξεργασία χωρίς κείμενο, θα πρέπει να καθορίσετε ρητά την αντικατάσταση χαρακτήρων για όλους τους χαρακτήρες.
Λύσεις
Υπάρχει τρόπος να αλλάξετε τον τύπο κειμένου χρησιμοποιώντας SQL κατά την ανάγνωση από έναν πίνακα σε μια βάση δεδομένων. Εάν είναι SQL, είναι ο μηχανισμός SQL Server που το εκτελεί, όχι SSIS, ώστε να μπορεί να εκτελείται χωρίς σφάλματα. Παρεμπιπτόντως, όλοι οι χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS είναι ";" Μετατράπηκε σε: Αυτή είναι μια δευτερεύουσα προδιαγραφή του SQL Server. Ακόμα και αν δεν είναι SSIS, το αποτέλεσμα είναι παρόμοιο για όλα τα συστήματα που χρησιμοποιούν τον SQL Server.
Ανοίξτε το ADO NET Translator και αλλάξτε τη λειτουργία πρόσβασης δεδομένων σε εντολή SQL. Τώρα που μπορείτε να εισαγάγετε SQL, γράψτε μια πρόταση Select για να ανακτήσετε δεδομένα από τη βάση δεδομένων. Το κείμενο που περιέχει χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS μετατρέπεται με τη χρήση του varchar με τη χρήση του cast.
Δεδομένου ότι οι χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS έχουν ήδη καταργηθεί κατά τη στιγμή της ροής δεδομένων στο SSIS, η επεξεργασία μπορεί να μεταβιβαστεί ως έχει.
Μπορείτε να δείτε ότι το κείμενο έχει γραφτεί με επιτυχία στο CSV. Επίσης, όλοι οι χαρακτήρες που δεν μπορούν να χρησιμοποιηθούν στο Shift-JIS είναι ";" Μπορείτε να δείτε ότι έχει μετατραπεί σε: