7
votes

Sauter des lignes lors de l'importation d'Excel dans SQL à l'aide de SSIS 2008

J'ai besoin d'importer des feuilles qui ressemblent aux éléments suivants:

    March Orders   
   ***Empty Row    
    Week Order # Date Cust #
    3.1 271356 3/3/10 010572
    3.1 280353 3/5/10 022114
    3.1 290822 3/5/10 010275
    3.1 291436 3/2/10 010155
    3.1 291627 3/5/10 011840


0 commentaires

4 Réponses :


11
votes

regarder:

Les liens ont plus de détails, mais j'ai inclus du texte des pages (juste au cas où les liens sont morts)

http: // social.msdn.microsoft.com/forums/en-us/sqlintegronservices/thread/97144BB2-9BB9-4CB8-B069-45C29690DFEB

q:

Bien que nous chargons le fichier texte sur SQL Server via SSIS, nous avons le provision pour sauter un nombre quelconque de lignes de pointe de la source et de la charge les données sur SQL Server. Y a-t-il une disposition pour faire la même chose pour Fichier Excel.

Le fichier Excel source pour moi a une description dans le meneur 5 des rangées, je veux le sauter et démarrer la charge de données à partir de la ligne 6. S'il vous plaît fournir vos pensées à ce sujet.

A:

Le plus facile serait de donner à chaque ligne un numéro (un peu comme une identité dans SQL Server) puis utilisez une scission conditionnelle pour filtrer tout où le nombre <= 5

http: // social. msdn.microsoft.com/forums/fr/sqlintegrationservices/thread/947fa27e-e31f-4108-A889-18ACEBCE9217

q:

  1. est-il possible pendant les données d'importation d'Excel à la table de dB sauter les 6 premières lignes par exemple?

  2. aussi des données Excel divisées par des sections avec des en-têtes. Est-il possible par exemple de sauter toutes les 12èmes rangées?

    A:

    1. oui vous pouvez. En fait, vous pouvez le faire très facilement si vous connaissez les colonnes numériques qui seront importées à partir de votre fichier Excel. Dans Votre tâche de flux de données, vous devrez définir la coutume "OpenRowset". Propriété de votre connexion Excel (cliquez avec le bouton droit de la souris sur votre connexion Excel> Propriétés; Dans la fenêtre Propriétés, recherchez OpenRowset sous mesure Propriétés). Pour ignorer les 5 premières lignes dans la feuille1, et importer des colonnes A-M, vous entrez la valeur suivante pour OpenRowset: feuille1 $ A6: m (Avis, je n'ai pas spécifié de numéro de ligne pour la colonne M. Vous pouvez entrer un numéro de rangée si vous le souhaitez, mais dans mon cas, le nombre de lignes peut varier d'une itération à la suivante)

    2. Encore une fois, oui vous pouvez. Vous pouvez importer les données à l'aide d'une scission conditionnelle. Vous configureriez la scission conditionnelle pour rechercher quelque chose dans chaque rangée qui l'identifie de manière unique comme une rangée d'en-tête; sauter les rangées qui correspondent à cette "logique d'en-tête". Une autre option serait d'importer tout les lignes, puis retirez les lignes d'en-tête à l'aide d'un script SQL dans le Base de données ... comme un curseur qui supprime chaque 12e rangée. Ou vous pouviez Ajoutez un champ d'identité avec une graine / incrément de 1/1, puis supprimez tout rangées avec des numéros de rangée qui se divisent parfaitement par 12. Quelque chose comme que ...

      http: // social.msdn.microsoft.com/forums/en-us/sqlintegronservices/thread/847C4B9E-B2D7-4CDF-A193-E4CE149866E2

      q:

      J'ai un package SSIS qui importe d'un fichier Excel avec des données à partir de la 7ème rangée.

      Contrairement à la même opération avec un fichier CSV ("rangées d'en-tête à sauter" dans Éditeur de Connection Manager), je n'arrive pas à trouver un moyen d'ignorer le Premières 6 rangées d'une connexion de fichier Excel.

      Je suppose que la réponse peut être dans l'un des flux de données Objets de transformation, mais je ne suis pas très familier avec eux.

      A:

      Question Connectez-vous pour voter 1 Connectez-vous pour voter RBHRO, en fait, il y avait 2 champs dans les 5 rangées supérieures qui ont eu des données que je pense empêchées l'importateur d'ignorer ces rangées complètement.

      Quoi qu'il en soit, j'ai trouvé une solution à mon problème.

      dans mon objet source Excel, j'ai utilisé "la commande SQL" comme "l'accès des données Mode '(il est tombé lorsque vous double-cliquez sur l'objet Source Excel). À partir de là, j'ai pu construire une requête («Build Query») qui seulement attrapé des disques dont j'avais besoin. Quelque chose comme ceci: sélectionnez F4, F5, F6 de la [feuille de calcul $ $] où (F4 n'est pas null) et (f4 <> 'Theheaderfieldname')

      Remarque: j'ai d'abord essayé un isnumeric au lieu de "N'EST PAS NULL", mais cela n'a pas été pris en charge pour une raison quelconque.

      Dans mon cas particulier, je n'étais que dans les lignes où f4 n'était pas Null (et heureusement F4 n'a contenté aucune indisk dans les 5 premiers Lignes). Je pourrais sauter la rangée de l'en-tête entière (rangée 6) avec le 2e où Clause.

      afin de nettoyer parfaitement ma source de données. Tout ce que je devais faire maintenant ajoutait un objet de conversion de données entre la source et la destination (tout devait être converti de Unicode dans la feuille de calcul), et cela a fonctionné.


3 commentaires

Veuillez améliorer cette réponse - Link uniquement Les réponses ne sont pas bonnes et ces liens sont tous morts illustrent pourquoi.


+1 pour la réponse améliorée. Merci. Les liens exigent que vous disposiez d'un utilisateur MSDN ou d'un utilisateur social inscrit dans - je viens d'obtenir: 502 - Web Server a reçu une réponse invalide lorsqu'il agit comme une passerelle ou un serveur proxy. Il y a un problème avec la page que vous recherchez et il ne peut pas être affiché. Lorsque le serveur Web (tout en agissant comme une passerelle ou un proxy) a contacté le serveur de contenu en amont, il a reçu une réponse invalide du serveur de contenu.


@Thronk, je ne suis pas sûr de ce qui se passe, mais je n'ai pas de connexion spéciale et je n'ai pas besoin de me connecter pour accéder à ces liens.



0
votes

Ma première suggestion n'est pas d'accepter un fichier dans ce format. Les fichiers Excel à importer doivent toujours commencer par des lignes d'en-tête de colonne. Renvoyez-le à celui qui vous la fournit et dites-leur de réparer leur format. Cela fonctionne la plupart du temps.

Nous fournissons des conseils à nos clients et aux fournisseurs sur la manière dont les fichiers doivent être formatés avant que nous puissions les traiter et que ce soit à leur hauteur de répondre autant que possible aux directives. Les gens ne savent souvent pas que des fichiers comme celui-ci créent un problème dans le traitement (mois prochain, il peut avoir six lignes avant la démarrage des données) et il faut être éduqué que les fichiers Excel doivent commencer par les en-têtes de colonne, n'ont aucune ligne blanche dans le milieu des données et ne répétant pas les en-têtes plusieurs fois et le plus important de tous, ils doivent avoir les mêmes colonnes avec les mêmes titres de colonne dans le même ordre à chaque fois. S'ils ne peuvent pas fournir cela, vous n'avez probablement pas quelque chose qui fonctionnera pour l'importation automatisée, car vous obtiendrez le fichier dans un format différent en fonction de l'ambiance de la personne qui maintient la feuille de calcul Excel. Incidemment, nous appuyons très difficiles à ne jamais recevoir de données d'Excel (ne fonctionne que quelques-uns de temps, mais s'ils disposent des données dans une base de données, elles peuvent généralement accueillir). Ils doivent également savoir que les modifications qu'elles apportées au format de feuille de calcul entraîneront une modification du package d'importation et qu'ils seront facturés pour ces changements de développement (en supposant que ceux-ci soient des clients extérieurs et non des clients internes). Ces modifications doivent être communiquées à l'avance et le temps de développeur programmé, un fichier avec le mauvais format échouera et sera renvoyé à eux pour corriger sinon.

Si cela ne fonctionne pas, puis-je vous suggérer d'ouvrir le fichier, supprimez les deux premières lignes et enregistrez un fichier texte dans un flux de données. Ensuite, écrivez un flux de données qui traitera le fichier texte. SSIS a fait un travail moche de soutenir Excel et tout ce que vous pouvez faire pour que le fichier dans un format différent rendra la vie plus facile à long terme.


0 commentaires

0
votes

Ma première suggestion n'est pas d'accepter un fichier dans ce format. Les fichiers Excel à importer doivent toujours commencer par des lignes d'en-tête de colonne. Renvoyez-le à celui qui vous la fournit et dites-leur de réparer leur format. Cela fonctionne la plupart du temps.

pas entièrement correct.

SSIS vous oblige à utiliser le format et assez souvent, il ne fonctionne pas correctement avec Excel

Si vous ne pouvez pas changer, le format envisagez d'utiliser notre processeur ETL avancé.

Vous pouvez sauter des lignes ou des champs et vous pouvez valider les données comme vous le souhaitez.

http://www.dbsoftlab.com/etl- Outils / avancé-etl-processeur / aperçu.html

ciel est la limite


1 commentaires

Veuillez mentionner explicitement votre affiliation avec un produit dans chaque poste où vous en parlez. Aussi, s'il vous plaît n'utilisez pas de ligne de signature.



0
votes

Vous pouvez simplement utiliser la propriété OpenRowset à trouver dans les propriétés Source Excel. Jetez un coup d'oeil ici pour plus de détails:

SSIS: lire et exporter des données Excel de Nth Row Row

Cordialement.


0 commentaires