Il y a une colonne dans Excel qui est censée être du texte, mais SSIS y voit du texte numérique et le fait automatiquement flotter en double précision [DT_R8].
Je peux le modifier manuellement dans les colonnes externes et de sortie de la branche Sortie, mais la sortie d'erreur refuse simplement de me laisser changer la colonne respective.
Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".
J'ai essayé de modifier le package xml. J'ai essayé le IMEX=1
et typeguessrow=0
mais rien de tout cela n'a résolu mon problème. Cela a-t-il une solution? Il existe également des articles vous suggérant de modifier votre registre afin qu'Excel lise plus que les 8 lignes par défaut avant de deviner le type de données. Je ne veux pas emprunter cette voie car même si cela devait fonctionner, je devrais alors modifier le registre sur la machine sur laquelle je prévois d'exécuter le package.
Le champ Excel à importer dans le champ SQL nvarchar lit par exemple
295.3
296.33
mais ils sont écrits dans la table SQL comme
295.30000000000001
296.32999999999998
Je mets des visualiseurs de données et les champs montrent
295.3
296.33
tout au long de l'exécution, ce qui est correct, mais je suppose que lorsqu'il atteint la source de destination OLE DB, il le convertit en quelque sorte en
295.30000000000001
296.32999999999998
ce qui est faux.
J'ai également des valeurs telles que V321.1 et V213.34 par exemple qui ne sont définitivement pas des entiers et doivent être stockées en tant que varchar.
la source
Réponses:
Est-il possible d'obtenir le fichier en tant que fichier .csv qui peut être importé comme un fichier texte et n'aura pas ce problème? Je récupère généralement tous les fichiers Excel et demande un autre format car SSIS et Excel ne fonctionnent pas bien ensemble à plusieurs niveaux.
la source
Il semble qu'il n'y ait aucun moyen de résoudre ce problème. Excel examine les premières lignes de données de la colonne et forcera toujours le type de données à FLOAT quoi qu'il arrive. On m'a proposé de créer un modèle avec quelques caractères varchar dans les premières lignes (8+) afin qu'EXCEL le prenne comme type de données, puis importe mes données. Ce qui m'a aidé, c'est que depuis que j'utilise Source Safe, je suis en mesure d '«archiver» un fichier afin qu'il rende mon fichier de package «en lecture seule» afin que Visual Studio ne puisse pas modifier mes types de données prédéfinis.
la source
Étape 1: ajoutez
IMEX=1; MAXROWSTOSCAN=0
la chaîne de connexion (par exempleProvider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0"
).Étape 2: fermez la solution. Ouvrez le package SSIS dans l'éditeur de texte, recherchez les colonnes qui continuaient à revenir au type de données prédéfini. Mettez-le à jour manuellement dans le fichier XML au format souhaité.
Étape 3: Ouvrez le package dans SQL Server Data Tool et exécutez-le, vous devriez maintenant pouvoir charger les données telles quelles à partir du fichier.
la source