MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB - Importer des données

Utilisez le mongoimport utilitaire pour importer des données dans une base de données MongoDB.

MongoDB fournit le mongoimport utilitaire qui peut être utilisé pour importer des fichiers JSON, CSV ou TSV dans une base de données MongoDB.

mongoimport est situé dans le répertoire bin (par exemple, /mongodb/bin ou là où vous l'avez installé).

Pour importer des données, ouvrez une nouvelle fenêtre Terminal/Invite de commandes et entrez mongoimport suivi de paramètres tels que le nom de la base de données, le nom de la collection, le nom du fichier source, etc.

Si vous constatez que vous ne pouvez pas exécuter mongoimport , assurez-vous que vous avez soit quitté le mongo ou ouvert une nouvelle fenêtre Terminal/Invite de commandes avant d'exécuter mongoexport , car il s'agit d'un utilitaire distinct.

Importer un fichier JSON

Voici un exemple d'exécution de mongoimport pour importer un fichier JSON.

Vous vous souvenez peut-être que nous utilisions auparavant mongoexport pour exporter les artistes collection dans un fichier JSON.

Plus tard, nous avons laissé tomber les artistes collection tout à fait.

Maintenant, nous allons réimporter cette collection dans notre base de données.

mongoimport --db music --file /data/dump/music/artists.json

Message résultant :

2016-07-12T13:34:04.904+0700	no collection specified
2016-07-12T13:34:04.905+0700	using filename 'artists' as collection
2016-07-12T13:34:04.911+0700	connected to: localhost
2016-07-12T13:34:04.968+0700	imported 13 documents

Si vous ne spécifiez pas de nom de collection, une collection est créée en fonction du nom du fichier (moins toute extension).

Maintenant, revenons à notre mongo Fenêtre Terminal/Command Prompt et récupérez la liste des collections dans notre base de données :

show collections

Résultat :

artists
musicians
producers

Nous allons maintenant interroger notre collection ravivée.

db.artists.find()

Résultat :

{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : ObjectId("5781f85d48ef8c6b3ffb0150"), "artistname" : "Deep Purple", "albums" : [ { "album" : "Machine Head", "year" : 1972, "genre" : "Rock" }, { "album" : "Stormbringer", "year" : 1974, "genre" : "Rock" } ] }
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
{ "_id" : ObjectId("578217c248ef8c6b3ffb015a"), "artistname" : "Robben Ford", "albums" : [ { "album" : "Bringing it Back Home", "year" : 2013, "genre" : "Blues" }, { "album" : "Talk to Your Daughter", "year" : 1988, "genre" : "Blues" } ] }
{ "_id" : 2, "artistname" : "Prince", "address" : { "street" : "Audubon Road", "city" : "Chanhassen", "state" : "Minnesota", "country" : "United States" } }
{ "_id" : 4, "artistname" : "Rush" }
{ "_id" : 3, "artistname" : "Moby", "albums" : [ { "album" : "Play", "year" : 1999, "genre" : "Electronica" }, { "album" : "Long Ambients 1: Calm. Sleep.", "year" : 2016, "genre" : "Ambient" } ] }
{ "_id" : ObjectId("578217c248ef8c6b3ffb015b"), "artistname" : "Snoop Dogg", "albums" : [ { "album" : "Tha Doggfather", "year" : 1996, "genre" : "Rap" }, { "album" : "Reincarnated", "year" : 2013, "genre" : "Reggae" } ] }

Spécifier un nom de collection

Vous pouvez utiliser le --collection argument pour fournir un nom de la collection dans laquelle les données doivent aller.

Importons un autre fichier, mais cette fois, spécifions un nom de collection :

mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json

Message résultant :

2016-07-12T14:09:01.793+0700	connected to: localhost
2016-07-12T14:09:01.849+0700	imported 1 document

Revenez maintenant à mongo et consultez la liste des collections :

show collections

Message résultant :

artists
jazz
musicians
producers

Et enfin, interrogez le jazz collecte :

db.jazz.find().pretty()

Message résultant :

{
	"_id" : ObjectId("578214f048ef8c6b3ffb0159"),
	"artistname" : "Miles Davis",
	"albums" : [
		{
			"album" : "Kind of Blue",
			"year" : 1959,
			"genre" : "Jazz"
		},
		{
			"album" : "Bitches Brew",
			"year" : 1970,
			"genre" : "Jazz"
		}
	]
}

Importer un fichier CSV

Vous pouvez importer un fichier CSV en utilisant --type csv .

Si le fichier CSV a une ligne d'en-tête, utilisez --headerline dire à mongoimport d'utiliser la première ligne pour déterminer le nom des champs dans le document résultant.

Si le fichier CSV n'a pas de ligne d'en-tête, utilisez le --fields paramètre pour définir les noms des champs.

Avec ligne d'en-tête

Voici un exemple d'importation d'un document avec une ligne d'en-tête.

Le contenu du fichier CSV :

_id,albumname,artistname
1,Killers,"Iron Maiden"
2,Powerslave,"Iron Maiden"
12,"Somewhere in Time","Iron Maiden"
3,"Surfing with the Alien","Joe Satriani"
10,"Flying in a Blue Dream","Joe Satriani"
11,"Black Swans and Wormhole Wizards","Joe Satriani"
6,"Out of the Loop","Mr Percival"
7,"Suck on This",Primus
8,"Pork Soda",Primus
9,"Sailing the Seas of Cheese",Primus

Importez le fichier :

mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv

Interroger la collection :

> db.catalog.find()
{ "_id" : 2, "albumname" : "Powerslave", "artistname" : "Iron Maiden" }
{ "_id" : 1, "albumname" : "Killers", "artistname" : "Iron Maiden" }
{ "_id" : 3, "albumname" : "Surfing with the Alien", "artistname" : "Joe Satriani" }
{ "_id" : 12, "albumname" : "Somewhere in Time", "artistname" : "Iron Maiden" }
{ "_id" : 10, "albumname" : "Flying in a Blue Dream", "artistname" : "Joe Satriani" }
{ "_id" : 6, "albumname" : "Out of the Loop", "artistname" : "Mr Percival" }
{ "_id" : 7, "albumname" : "Suck on This", "artistname" : "Primus" }
{ "_id" : 8, "albumname" : "Pork Soda", "artistname" : "Primus" }
{ "_id" : 11, "albumname" : "Black Swans and Wormhole Wizards", "artistname" : "Joe Satriani" }
{ "_id" : 9, "albumname" : "Sailing the Seas of Cheese", "artistname" : "Primus" }

Sans ligne d'en-tête

Voici un autre fichier CSV, mais celui-ci n'a pas de ligne d'en-tête :

Mutt Lange, 1948
John Petrucci, 1967
DJ Shadow, 1972
George Clinton, 1941

Nous allons maintenant l'importer et spécifier les noms de champs à utiliser :

mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv

Interroger la collection :

> db.producers.find()
{ "_id" : 1, "name" : "Bob Rock" }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b72"), "name" : "John Petrucci", "born" : 1967 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b73"), "name" : "Mutt Lange", "born" : 1948 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b74"), "name" : "George Clinton", "born" : 1941 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b75"), "name" : "DJ Shadow", "born" : 1972 }

Vous verrez que l' ObjectId champ a été automatiquement créé et rempli pour nous.

De plus, nous avions déjà un document dans cette collection avant d'exécuter l'importation : { "_id" :1, "name" :"Bob Rock" } . Par conséquent, vous pouvez voir que l'importation a simplement ajouté à la collection (au lieu de la remplacer ainsi que tout son contenu).

Vous pouvez utiliser la même méthode pour importer des fichiers TSV. Utilisez simplement --type tsv .