Devinettes :
- Le fichier est
utf-8
encodé (ou tout autre encodage, SQL-Server 2008 ne peut pas lire nativement).- Vous devez savoir que SQL-Server est plutôt limité avec les encodages de fichiers.
CHAR
(ouVARCHAR
) est unextended ASCII 1-byte encoding
etNCHAR
(ouNVARCHAR
) est unUCS-2 2-byte encoding
(qui est presque identique àUTF-16
). - Avec SQL-Server 2016 (et SP2 pour la version 2014), une prise en charge supplémentaire a été introduite, en particulier pour
utf-8
. - Essayez d'ouvrir votre XML avec un éditeur approprié (par exemple, notepad++) et essayez de trouver l'encodage du fichier. Essayez de l'enregistrer sous "unicode / UCS-2 / utf-16" et réessayez l'importation.
- Essayez d'utiliser votre importation avec
CLOB
au lieu deBLOB
. Lecture du fichier en tant que binaire LargeObject prendra les octets les uns après les autres. SQL-Server essaiera de lire ces octets sous forme de chaîne avec une taille fixe par caractère. Un personnage LOB peut fonctionner dans des circonstances particulières. - Vérifiez les deux premiers octets pour une
BOM
(marque d'ordre d'octet)
- Vous devez savoir que SQL-Server est plutôt limité avec les encodages de fichiers.
- Il y a de la saleté dans votre XML
- Ouvrez le fichier avec un éditeur HEX et essayez de trouver des codes étranges
- Votre code traite le contenu du fichier dans une instruction créée dynamiquement.
- Dans de tels cas, vous rencontrez parfois des troncatures ou des guillemets avec rupture de chaîne
- Conseil général :
- Si vous importez des données et que vous vous attendez à des problèmes, il est fortement recommandé d'utiliser une approche en deux étapes
- Lire votre fichier dans une table intermédiaire tolérante (avec
NVARCHAR(MAX)
ou encoreVARBIANRY(MAX)
colonnes cibles) et essayez de continuer. - Il peut être nécessaire d'utiliser un autre outil pour modifier votre fichier avant l'importation.