3
votes

Ignorer la colonne du fichier Excel lors de l'importation vers SQL Server

J'ai plusieurs fichiers Excel qui ont le même format. Je dois les importer dans SQL Server.

Le problème que j'ai actuellement est qu'il y a deux colonnes de texte que je dois ignorer complètement car elles sont du texte libre et la longueur des caractères pour certaines lignes dépasse ce que le serveur me permet d'importer, ce qui entraîne une erreur de troncature.

Étant donné que je n'ai pas besoin de ces colonnes pour mon analyse, la table dans laquelle j'importe n'inclut pas ces colonnes, mais pour une raison quelconque, les packages SSIS reprennent toujours ces colonnes et coupe le travail d'importation à mi-chemin.

J'ai essayé d'utiliser la longueur maximale des caractères pour ces colonnes, ce qui entraîne toujours une erreur de troncature.

J'ai besoin de créer un package SSIS qui ignore complètement les deux colonnes sans supprimer les colonnes d'Excel.


5 commentaires

Quel outil utilisez-vous pour créer le package SSIS? Il semble qu'un moyen d'ignorer certaines colonnes devrait être évident lors de la création d'un mappage entre la source et une destination.


J'utilise l'assistant d'importation et d'exportation de SQL Server 2017


Parce que ma table n'a pas ces colonnes automatiquement sur le mappage, les colonnes sont ignorées mais la troncature apparaît toujours pour ces colonnes ignorées


Lors de l'importation, lorsque vous cliquez sur la colonne Mapping, le mappage des détails s'affiche. Pour la colonne que vous souhaitez exclure, cliquez sur la liste déroulante du nom de la colonne dans la colonne de destination. Vous y obtiendrez une option Ignorer et en sélectionnant cette option, vous pourrez ignorer les colonnes nécessaires à exclure de votre processus.


@OtshepengDitshego veuillez vérifier l'image ajoutée dans la section réponse.


4 Réponses :


2
votes

Vous pouvez spécifier les colonnes que vous devez ignorer dans la boîte de dialogue Modifier les mappages.

J'ai ajouté l'image pour votre référence:

 entrez la description de l'image ici


0 commentaires

1
votes

Si vous créez simplement le package SSIS dans SSDT le fichier Excel peut être interrogé pour ne renvoyer que les colonnes requises. Dans le package, créez un gestionnaire de connexions Excel à l'aide du fichier Excel. Ensuite, dans le flux de contrôle du package, ajoutez une tâche de flux de données qui contient un composant source Excel. Sur cette source, changez le mode d'accès aux données en commande SQL et le fichier peut alors être interrogé de la même manière que SQL. Dans l'exemple suivant, TabName est le nom de l'onglet Excel contenant les données qui seront renvoyées. Si les noms de tabulation ou de colonne contiennent des espaces, ils devront être placés entre crochets, c'est-à-dire que TabName sera [Tab Name] . entrez la description de l'image ici


0 commentaires

0
votes

Assistant Import / Export

Puisque vous avez mentionné dans les commentaires que vous utilisez l'Assistant Import / Export SQL Server. Vous pouvez résoudre ce problème si vous avez une colonne fixe (plage) que vous souhaitez importer (exemple: les 10 premières colonnes).

Dans l'assistant d'importation / exportation, après avoir sélectionné les options de destination, il vous sera demandé si vous voulez lire à partir de tables ou de requêtes:

 enter image description here

Sélectionnez l'option de requête, puis utilisez une simple requête de sélection et spécifiez la plage de colonnes après le nom de la feuille. Par exemple:

SELECT * FROM [Sheet1$A:C]

La requête ci-dessus sera lue dans les 3 premières colonnes de Sheet1 puisque A: C représente la plage entre la première colonne Un et troisième colonne C.

 entrez la description de l'image ici

Vous pouvez maintenant vérifier les colonnes depuis la boîte de dialogue Modifier les mappages :

entrez la description de l'image ici


SSIS

Vous pouvez utiliser la même logique dans le package SSIS, écrivez simplement la même commande SQL dans Excel Source après avoir changé le mode d'accès en commande SQL.


0 commentaires

-1
votes

La solution est simple. J'avais besoin d'écrire une requête qui exclura les colonnes. Ainsi, au lieu de sélectionner «Copier les données d'une ou plusieurs tables», vous sélectionnez «écrire une requête» et excluez les colonnes dont vous n'avez pas besoin. Celui-ci a fonctionné à 100%


0 commentaires