2010-04-15 6 views
0

J'ai un fichier CSV particulièrement mauvais. Bien que j'ai "résolu" le problème à la fin en écrivant manuellement des scripts pour traiter et retraiter ce fichier spécifique Je voulais savoir s'il y avait d'autres solutions là-bas.Traitement d'un fichier CSV mal formaté

Vous avez un fichier CSV dont tous les champs sont terminés par | caractères (pipe). L'exécution d'une vérification rapide vous montre qu'il y a 53 champs dans le fichier. La personne qui vous a remis le dossier dit qu'il n'y a que 28 champs. Tous les champs ne contiennent pas d'informations. Par exemple, il existe cinq champs custom_field_ {num} pouvant contenir ou non des données.

Comment voulez-vous obtenir dans une base de données bien?

La solution idéale (et celle que j'ai recherchée haut et bas pour) serait de tout jeter dans une table sans noms de colonnes ou de spécifications. Ensuite, supprimez toutes les colonnes qui étaient complètement vides, puis donnez-leur les titres et les spécifications.

+0

Jetez un oeil à mon projet FOSS http://code.google.com/p/csvfix/ qui est un outil pour la fusion (et la validation) des fichiers CSV. Il traite également plusieurs types de données non-CSV et peut générer du code SQL à partir de CSV pour les mises à jour de base de données. –

Répondre

1

Vous ne pouvez pas anticiper où le fichier mal formé sera mal formé. La prochaine fois que l'utilisateur vous donne le fichier, il peut être au milieu du fichier.

Si vous essayez de deviner avec un programme, vous pouvez constater que les données sont toutes déplacées correctement pour quelques lignes. Cela mettrait les choses hors de tout. Par exemple, vous pouvez vous retrouver avec "Nom" apparaissant dans la colonne de l'indicatif régional. Par conséquent, prévoyez toujours d'inspecter manuellement le fichier en premier.

Éditer: Si le fichier est grand, comme vous le dites 6k + lignes, j'écrirais un programme pour détecter où le problème est, et je dirais à mon fournisseur de fichiers où ils ont fait l'erreur. Je n'essaierais pas de "corriger" automatiquement les mauvaises données.

+0

J'ai 6k + dossiers. Je ne peux pas les inspecter manuellement tous. –

+0

Terminé en le lavant avec un couple de scripts courts, s'est bien passé. –

0

Je ne suis pas sûr de ce que vous entendez par "mauvais format". Mais si les séparateurs sont cohérents et que le nombre de colonnes est le même sur les lignes, utilisez simplement l'instruction MySQL LOAD DATA INFILE. Vous pouvez spécifier '|' comme séparateur de champ là.

+0

CHARGER LES DONNÉES est en fait assez pointilleux sur toutes sortes d'anomalies de fomatting dans le CSV – Eli

0

Je trouve que MsAccess effectue un travail correct de vous permettre d'aligner les données par colonne ou de les séparer en utilisant des séparateurs d'une manière visuelle. De là, vous pouvez réexporter ou mettre à jour directement dans SQL

Questions connexes