2012-11-25 1 views
0

Question de discussion:rails d'importation de fichier de données .. Sujet de discussion

J'ai un fichier CSV que j'importe dans ma base de données via une application rails.

Si, pour une raison quelconque, l'importation est arrêtée à mi-chemin, le fichier a été marqué comme importé, de sorte qu'il ne sera plus importé, mais il n'est pas terminé. Certains ont suggéré que la première étape que je prends est d'importer les données du fichier dans une table, puis je peux traiter les enregistrements, et si le processus est arrêté, je peux reprendre là où je m'étais arrêté. Le problème que je vois avec ceci est que les données de fichier qui sont actuellement stockées en tant que zip seront explosées dans la base de données, prenant beaucoup plus de place que nécessaire. Je génère actuellement un fichier (response.csv) pour chaque importation, qui contient les données d'origine, mais avec une réponse.

Je me demande comment les autres ont géré cela. Quel est le moyen "rails" pour importer de grandes quantités de données? Quelle est la meilleure pratique ..

Répondre

0

Soit:

  • Importation chaque ligne séparément afin que vous puissiez reprendre là où vous avez quitté
  • Utiliser des transactions afin que les modifications ne sont pas engagés à la db avant que l'opération est terminée
+0

Étant donné cela, comment généreriez-vous des réponses? – baash05

+0

Si vous voulez vraiment jongler avec les données d'origine - vous pouvez simplement générer les lignes de la réponse à la volée. Si vous avez une transaction et qu'elle échoue, vous recommencez à zéro. Si vous avez une importation qui continue, vous continuez simplement à ajouter au fichier. Mais si possible, je générerais la réponse entière de la base de données après l'importation. – averell

+0

Ouais .. générer la réponse à la volée n'est pas pratique .. 60k lignes par fichier, et plusieurs fichiers par ensemble d'importation compressé. Je peux voir comment passer à la DB si .. Encore n'aime pas l'idée d'importer 20 fichiers zippés brut dans la base de données. Il se sent beurk. – baash05

Questions connexes