Il y a une colonne d'Excel censée être du texte, mais SSIS voit du texte numérique là-bas et en fait automatiquement un flotteur à double précision [DT_R8].
Je peux le changer manuellement dans les colonnes externes et sorties de la branche de sortie, mais la sortie d'erreur refuse simplement de me laisser changer la colonne correspondante.
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 paquet XML. J'ai essayé le IMEX=1
et typeguessrow=0
Mais rien de tout cela n'a résolu mon problème. Est-ce que cela a une solution du tout? Il existe également des articles vous suggérant de modifier votre registre afin que Excel lit plus que les lignes 8 par défaut avant de deviner le type de données. Je ne veux pas aller à cet itinéraire car même si cela devait travailler, je devrais alors modifier le registre de la machine que je prévois d'exécuter le colis.
Le champ Excel à importer dans le champ SQL Nvarchar lit par exemple
295.3
296.33
mais ils sont écrits sur la table SQL comme
295.30000000000001
296.32999999999998
Je mets dans les données de données et les champs montrent
295.3
296.33
tout le chemin à travers l'exécution qui est correct mais je suppose quand il frappe le OLE DB Source de destination, cela le convertit en quelque sorte à la
295.30000000000001
296.32999999999998
ce qui est faux.
J'ai également des valeurs telles que V321.1 et V213.34, par exemple, qui sont définitivement non des entiers et doivent être stockées comme Varchar.
Il semble qu'il n'y a aucun moyen de résoudre ce problème. Excel regarde les premières lignes de données dans la colonne et forcera toujours le type de données à flotter, quoi qu'il arrive. On m'a donné une solution de création d'un modèle avec quelques caractères Varcharis dans les premières lignes (8+) afin que Excel choisisse comme le type de données, puis importer mes données. En ce qui concerne l'aidé, car j'utilise Source Safe, je suis capable de "vérifier" un fichier de sorte qu'il rend mon fichier de colis "en lecture seule" afin que Visual Studio ne puisse pas modifier mes types de données pré-définis.
Est-il possible d'obtenir le fichier sous forme de fichier .csv pouvant être importé comme un fichier texte et ne disposera pas de ce problème? Je recette généralement tous les fichiers Excel et demandez un autre format car SSIS et Excel ne jouent pas bien ensemble à plusieurs niveaux.
Étape 1: Ajouter IMEX=1; MAXROWSTOSCAN=0
Dans la chaîne Connections (E.G. Provider=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 ont conservé l'inversion du type de données pré-défini. Mettez la mise à jour manuellement dans le fichier XML au format souhaité.
Étape 3: ouvrez l'emballage dans l'outil SQL Server Data Tool et exécutez maintenant, vous devriez maintenant pouvoir charger les données telles que dans le fichier.