Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Parsowanie XML - Niedozwolony znak XML (podczas wykonywania procedury składowanej, uruchamianie zapytań procedury nie powoduje żadnych błędów)

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 (lub VARCHAR ) jest extended ASCII 1-byte encoding i NCHAR (lub NVARCHAR ) to UCS-2 2-byte encoding (który jest prawie identyczny z UTF-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 zamiast BLOB . 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)
  • 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 nawet VARBIANRY(MAX) kolumny docelowe) i spróbuj kontynuować.
    • Może być konieczne użycie innego narzędzia do zmiany pliku przed importem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaimportować plik JSON do tabeli serwera SQL?

  2. XQUERY - Jak używać sql:variable w funkcji 'value()'?

  3. Jaka jest wewnętrzna reprezentacja datetime w serwerze sql?

  4. Co to jest SQL Server Management Studio (SSMS)?

  5. Zalety SQL Server 2008 nad SQL Server 2005?