2010-04-22 4 views
0

J'ai une tâche de flux de données configurée dans SSIS.Tâche de flux de données SSIS Excel Source

La source provient d'une source Excel et non d'une base de données SQL.

Le problème que je semble obtenir est que le paquet est l'importation de lignes vides. Mes données ont des données dans 555200 lignes, mais lors de l'importation du package SSIS importe plus de 900 000 lignes. Les lignes supplémentaires sont importées même si l'autre est vide.

Lorsque je télécharge ensuite cette table dans Excel, il y a des lignes vides entre les données.

Y at-il de toute façon je peux éviter cela?

Merci

Gerard

+0

copie possible de http://stackoverflow.com/questions/2682824/ssis-dataflow-from-excel-empty-rows –

Répondre

0

La meilleure chose à faire. Si vous le pouvez, exportez les données dans un fichier plat, csv ou tab, puis lisez-le. Le problème est que même si ces lignes sont vides, elles ne sont pas vraiment vides. Donc, quand vous sautez à travers ce pont ODBC-Excel, vous obtenez ces lignes comme des espaces.

Vous pouvez éventuellement ajuster la manière dont la feuille de calcul est générée pour éliminer ce problème ou supprimer manuellement les lignes. Le problème avec ces solutions est qu'elles ne sont pas évolutives ou maintenables à long terme. Vous serez également coincé avec ce pont ODBC rachitique. La meilleure solution à long terme est d'éviter d'utiliser entièrement le pont ODBC-Excel. En vidant les données dans un fichier plat, vous avez un contrôle total sur la façon de lire, de valider et d'interpréter les données. Vous ne serez pas à la merci d'une couche de traduction qui est à ce jour criblée de bugs et est dans le meilleur des cas "excentrique"

+0

merci qui a été très utile – Gerard

0

Vous pouvez également ajouter un composant Fractionnement conditionnel dans votre tâche Flux de données, entre le tâche source et la tâche de destination. Ici, vérifiez si somecolumn est nul ou vide - quelque chose qui est cohérent - ce qui signifie pour chaque ligne valide, il a des données, et pour chaque ligne invalide, il est vide ou nul.

Ensuite, ignorez la sortie pour cette condition, en envoyant le reste des lignes à la destination. Vous devriez alors seulement obtenir le nombre de lignes avec des données valides d'Excel.

Questions connexes