2012-07-25 4 views
0

J'ai un fichier .txt qui ne contient pas de requête d'insertion comme ceci. Je veux analyser le fichier file.txt et obtenir les données afin d'enregistrer dans mon mongoid db pour mes rails application.i essayé d'analyser en utilisant les méthodes ruby ​​de base, mais incapable d'obtenir le bon format. Puis-je obtenir un hachage à partir des données qui peuvent directement être utilisées pour mettre en œuvre l'insertion en bloc ou regex pour analyser et obtenir les valeurs uniquement.Parse une chaîne pour enregistrer les données sur mongo db

INSERT INTO "venues" ("_id", "postal_code", "lat", "lng", "address", "title", "type") 
VALUES (33, "SW1A 0AA", "51.49984", "-0.124663", "BIG BEN & HOUSES OF PARLIAMENT, House of 
Commons, London, SW1A 0AA","BIG BEN & HOUSES OF PARLIAMENT", 2); 
+0

par mon ami et cela fonctionne item.scan (/ VALUES \ s \ (. + \) /). first.gsub (/ VALEURS \ s \ (| \) | \ "/," "). split (", ") – Bijendra

Répondre

0

item.scan (/ VALEURS \ s (+) /.) First.gsub (/ s VALEURS \ (|) | \ "/", ").. Split (", «) a suggéré

1

Vous avez besoin d'une expression rationnelle qui prend INSERT INTO (...) et VALUES (...) parties et ne dépend pas de nouveaux symboles de lignes. Par exemple:

str.gsub(/(\r|\n)/, '') =~ /INSERT INTO "(\w{1,})" \((.*{1,})\) VALUES \((.*{1,})\)/ 

Ensuite, vous aurez les variables suivantes:

table, keys, values = $1, $2, $3 

Vous pouvez également nettoyer les clés et les valeurs de symboles supplémentaires:

keys.split(",").map {|val| val.gsub("\"", '').strip } 
values.split(",").map {|val| val.gsub("\"", '').strip } 

Alors maintenant, vous avez toutes les données nécessaires pour Migration de processus vers MongoDB.

+0

Merci pour la réponse – Bijendra

Questions connexes