2010-05-06 9 views
2

Scénario: Je travaille sur une application rails qui prendra l'entrée de données sous la forme de fichiers texte téléchargés. J'ai besoin d'analyser ces fichiers avant d'importer les données. Je peux choisir le type de fichier téléchargé sur l'application; le logiciel (Microsoft Access) utilisé par ceux qui téléchargent a plusieurs options d'exportation concernant le type de fichier.Quel est le meilleur format de fichier à analyser?

Bien que cela puisse être insignifiant, je me demandais s'il y a un type de fichier spécifique qui est analysé le plus efficacement. Cette question peut être considérée comme indépendante de la langue, je crois.

(Bien que XML est souvent analysé, il n'est pas un type de fichier possible pour l'amour de ce projet.)

+3

Cette question est trop ancienne. Quel type de données importez-vous? CSV travaillerait-il? YAML fonctionnerait-il? –

+0

Un qui est suffisant pour la tâche et vous avez un outil existant pour analyser? L'émetteur a-t-il un outil à émettre? Un simplement assez pour que les humains écrivent de manière fiable sans outil? Les détails sont importants ici ... – dmckee

+1

Et c'est vraiment difficile de donner une bonne réponse à moins de savoir pourquoi XML n'est pas approprié. La complexité des données que le fichier doit décrire signifie également beaucoup. Peut-être envisager quelque chose comme CSV, ou le format de fichier Ini? – Svend

Répondre

2

Si c'est quelque chose exporté par Access, le plus simple serait CSV; en particulier depuis Ruby contient un analyseur CSV dans le standard library. Vous devrez faire un travail pour déterminer le dialecte de CSV (ce qu'il utilise pour le délimiteur, comment il gère les guillemets); Je ne sais pas quelle est la robustesse de l'analyseur ruby ​​avec ces problèmes, mais vous devriez également avoir un certain contrôle de Microsoft Access.

2

Vous pouvez jeter un oeil à JSON. C'est un format léger, et contrairement à XML, il est vraiment facile et propre à analyser sans avoir besoin d'une énorme bibliothèque sur le backend.

Il peut représenter des types comme des chaînes, des nombres, des tableaux assosiative (objets), et les listes de ces

+0

Si je ne me trompe pas, JSON n'est pas un format que Microsoft Access peut exporter. Je m'excuse de ne pas mentionner que les fichiers à télécharger dans mon application sont des exportations Access. – anxiety

+0

Pas votre faute, j'aurais dû lire TOUS les tags :) – LukeN

0

Je suggère n-SV (où n est un certain caractère) pour les données ne pas comprennent n. Cela fera duxe les fichiers une question de split.

Si vous avez des données plus flexibles, je suggérerais JSON.

+0

CSV (ou n-SV) est très difficile à analyser, puisque vous devez tenir compte de l'inclusion des délimiteurs eux-mêmes – JoelFan

+0

Je suppose que CSV serait alors le meilleur format pour utiliser les conditions données: 1. Les fichiers téléchargés dans mon application sont les exportations ms-access 2.Je vais analyser en ruby ​​ – anxiety

+0

@anxiety: vous devriez revoir la condition que JoelFan a soulevée. Si vous avez CSV et qu'il y a une chaîne qui a '...," blah, foo ", ...', vous aurez toutes sortes de * fun * pour l'analyser. Si vous acceptez les numéros européens, des virgules seront trouvées de temps en temps. De plus, il y a le format de nombre humain lisible par 1 000 000. Mon point est, "obtenir un moteur de CSV si les données sont compliquées". –

0

Si vous avez besoin de rouler votre propre analyseur, je suggérerais CSV ou une forme de format séparé par délimiteur.

Si vous pouvez utiliser d'autres bibliothèques, il existe de nombreuses options. JSON a l'air assez fascinant.

+0

CSV (ou n-SV) est très difficile à analyser, car vous devez tenir compte de l'inclusion des délimiteurs eux-mêmes – JoelFan

+0

Difficile, mais faisable. Voici des exemples basés sur Java: [parseCsv] (http://stackoverflow.com/questions/2241915/regarding-java-string-manipulation/2241950#2241950) et [writeCsv] (http://stackoverflow.com/questions/477886)/jsp-generate-excel-spreadsheet-xls-à-télécharger/2154226 # 2154226). – BalusC

+0

Vraiment? Je pense que quelque chose de très simple pourrait être écrit qui ne serait probablement pas flexible mais au moins permettrait de résoudre ses problèmes. – Robb