2017-01-02 3 views
0

J'essaie de charger des données à partir d'un fichier plat. Le fichier fait environ 2,5 Go et le nombre de lignes est proche de milliards. J'utilise une source de fichier plat à l'intérieur de DFT. Peu de lignes à l'intérieur du fichier ne suivent le modèle de colonne, par exemple il existe un séparateur supplémentaire ou un qualificateur de texte en tant que valeur d'une colonne. Je veux sauter ces lignes et charger le reste des lignes qui a un format correct. J'utilise SSIS 2014. Source de fichier plat à l'intérieur de DFT est en panne. J'ai défini la propriété alwaysCheckforrowdelimiter sur false mais ne fonctionne toujours pas. Comme le fichier est trop volumineux, l'ouverture manuelle et le changement ne sont pas possibles. Aide aimablement.ignorer les lignes d'erreur du fichier plat dans ssis

+0

Si cela est un hors je vous suggère d'utiliser un script (VBScript, Powershell, peu importe) pour rechercher dans le fichier et le nettoyer au préalable. –

+0

Merci ... mais le script pour un fichier contenant près d'un milliard de lignes prend du temps. Cela va faire partie d'un travail quotidien prévu et doivent terminer dans un certain temps. –

+0

Etes-vous sûr que cela prendra du temps? pour un milliard de lignes cela peut prendre peut-être une demi-heure max peut-être? Le problème avec SSIS est que si vous avez trop de délimiteurs, il peut ne pas le reconnaître - il peut simplement mélanger les champs en 1 position. Vous pourriez vouloir le considérer quand même. –

Répondre

0

J'ai la même idée que Nick.McDermaid mais je peux peut-être vous aider un peu plus. Vous pouvez nettoyer votre fichier avec une expression régulière. (Dans un script)

Vous avez juste besoin de définir une regex pour faire correspondre les lignes avec le nombre de délimiteur que vous voulez. Les autres lignes devraient être supprimées.

Voici un exemple visuel exécuté dans Notepad ++

Notepad++ Example screenshot

Voici le modèle utilisé pour mon exemple:

^[A-Z]*;[A-Z]*;[A-Z]*;[A-Z]*$ 

Et l'échantillon de données:

AA;BB;CC;DD 
AA;BB;CC;DD 
AA;BB;CC;DD;EE 
AA;BB;CC;DD 
AA;BB;CC 
AA;BB;CC;DD 
AA;BB;CC;DD 

Vous pouvez l'essayer en ligne: https://regex101.com/r/PIYIcY/1

Cordialement, Arnaud