Comment importer une largeur fixe à plat du fichier dans la base de données avec SSIS?
Ce que quelqu'un a un tutoriel sur comment importer une largeur fixe de fichier plat dans une base de données à l'aide d'un package SSIS?
J'ai un fichier plat contenant des colonnes avec des longueurs variables.
Column name Width
----------- -----
First name 25
Last name 25
Id 9
Date 8
Comment faire pour convertir un fichier plat dans des colonnes?
OriginalL'auteur OBL | 2012-04-23
Vous devez vous connecter pour publier un commentaire.
Voici un exemple de package créé à l'aide de SSIS 2008 R2 qui explique comment importer un fichier plat dans une table de base de données.
Fixed_Width_File.txt
avec des données comme le montre la capture d'écran. La capture d'écran utilise Notepad++ pour afficher le contenu du fichier. Il a la capacité d'afficher les caractères spéciaux comme un retour chariot et un saut de ligne.CR LF
désigne les séparateurs de lignes retour Chariot et saut de Ligne.Dans la base de données SQL server, créer une table nommée
dbo.FlatFile
à l'aide de la créer un script fourni en vertu de Scripts SQL section.Créer un package SSIS et ajouter un nouveau gestionnaire de connexions OLE DB de se connecter à la base de données SQL Server. Supposons que le gestionnaire de connexions OLE DB est nommé comme SQLServer.
Double-cliquez sur la tâche de flux de données et vous serez redirigé vers l'onglet flux de données. Sur l'onglet flux de données, placez un Source de Fichier Plat. Double-cliquez sur la source de fichier plat et le Source de Fichier Plat Éditeur apparaîtra. Cliquez sur le Nouveau bouton pour ouvrir la de connexions de Fichiers Plats Éditeur du Gestionnaire de.
Sur la section Générale de la Source de Fichier Plat Éditeur, entrez une valeur dans nom du gestionnaire de connexions (dire Source) et accédez à l'appartement de l'emplacement du fichier et sélectionnez le fichier. Cet exemple utilise le fichier d'exemple dans le chemin d'accès
C:\temp\Fixed_Width_File.txt
Si vous avez des lignes d'en-tête de votre fichier, vous pouvez entrer une valeur 1 dans l'en-Tête de lignes à ignorer zone de texte pour sauter la ligne d'en-tête.69
dans la largeur de l'emprise de la zone de texte. Cette valeur est la somme de la largeur de toutes les colonnes + 2 pour le séparateur de lignes. Une fois que vous avez réglé la largeur de ligne, vous devriez voir la largeur fixe de fichier correctement les données sur la Source de données des colonnes. Maintenant, vous devez cliquer à l'emplacement approprié pour déterminer la colonne limites. Remarque les sections 4, 5, 6 et dans la capture d'écran ci-dessous.FirstName
,LastName
,Id
,Date
etRowDelimiter
Id
colonne de type de donnéesfour-byte signed integer [DT_I4]
et la Date de la colonne de type de donnéesdate [DT_DATE]
RowDelimiter
parce que nous n'avons pas besoin que.OLE DB Destination
. Connecter la sortie de la source de fichier Plat pour la Destination OLE DB.SQLServer
et définir la Nom de la table ou de la vue déroulant à[dbo].[FlatFile]
Cet exemple devrait vous donner une idée sur la façon d'importer de largeur fixe de fichier plat dans la base de données. Il n'explique pas comment gérer la journalisation des erreurs, mais cela devrait vous aider à démarrer et vous faire découvrir d'autres SSIS de fonctionnalités liées à quand vous jouez avec les paquets.
Espère que ça aide.
SQL Scripts
:OriginalL'auteur
Dans la colonne dérivée de la transformation, vous pouvez utiliser la fonction SUBSTRING() pour chaque colonne.
Exemple:
Colonnes DerivedColumn
Prénom SUBSTRING(Données, startFrom, Longueur);
Ici le Prénom a une largeur de 25 donc, si nous considérons qu'à partir de la 0e position puis dans la colonne dérivée, vous devez spécifier en donnant SUBSTRING(Données, 0, 25);
De même pour les autres colonnes.
OriginalL'auteur Amarnath
Très bien expliqué, Siva! Votre tutoriel et d'excellentes illustrations point ce que Microsoft devrait avoir été clair
Sans ces deux choses, une tentative d'exécution de l'importation de donner ce message d'erreur:
La conversion des données de colonne de la Colonne "x" a renvoyé la valeur de l'état 4 et le statut du texte "texte a été tronqué ou un ou plusieurs personnages avaient pas de correspondance dans le code cible de la page.".
J'ai ajouté dans ce texte d'erreur dans l'espoir que quelqu'un va trouver cette page en cherchant la cause de leur erreur. Votre turorial vaut la peine de trouver, même si, après le fait!
OriginalL'auteur Paul M Simpson