Czyste zgadywanie:
- Plik to
utf-8
encoded (lub jakiekolwiek inne kodowanie, SQL-Server 2008 nie może czytać natywnie).- Musisz wiedzieć, że SQL-Server jest dość ograniczony w kodowaniu plików.
CHAR
(lubVARCHAR
) jestextended ASCII 1-byte encoding
iNCHAR
(lubNVARCHAR
) toUCS-2 2-byte encoding
(który jest prawie identyczny zUTF-16
). - W SQL-Server 2016 (i SP2 dla v2014) wprowadzono dodatkowe wsparcie, szczególnie dla
utf-8
. - Spróbuj otworzyć plik XML za pomocą odpowiedniego edytora (np. notepad++) i spróbuj znaleźć kodowanie pliku. Spróbuj zapisać to jako „unicode / UCS-2 / utf-16” i ponów import.
- Spróbuj użyć importu z
CLOB
zamiastBLOB
. Odczytywanie pliku jako binarnego LargeObject zajmie bajty jeden po drugim. SQL-Server spróbuje odczytać te bajty jako ciąg ze stałym rozmiarem na znak. znak LOB może działać w szczególnych okolicznościach. - Sprawdź pierwsze dwa bajty dla
BOM
(znak kolejności bajtów)
- Musisz wiedzieć, że SQL-Server jest dość ograniczony w kodowaniu plików.
- Jest trochę brudu w Twoim XML
- Otwórz plik za pomocą edytora HEX i spróbuj znaleźć dziwne kody
- Twój kod przetwarza zawartość pliku w ramach dynamicznie tworzonej instrukcji.
- W takich przypadkach czasami natrafiasz na obcinanie lub cudzysłowy rozdzielające ciąg
- Ogólna wskazówka:
- Jeśli importujesz dane i spodziewasz się problemów, zdecydowanie zalecamy skorzystanie z podejścia dwuetapowego
- Odczytaj plik do tolerancyjnej tabeli pomostowej (z
NVARCHAR(MAX)
lub nawetVARBIANRY(MAX)
kolumny docelowe) i spróbuj kontynuować. - Może być konieczne użycie innego narzędzia do zmiany pliku przed importem.