web-dev-qa-db-ja.com

mongoimportを使ってcsvをインポートする方法

連絡先情報を含むCSVをインポートしようとしています。

Name,Address,City,State,Zip  
Jane Doe,123 Main St,Whereverville,CA,90210  
John Doe,555 Broadway Ave,New York,NY,10010 

これを実行してもデータベースにドキュメントは追加されないようです。

$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline

Traceはimported 1 objectsと言っていますが、Mongo Shellを起動してdb.things.find()を実行しても新しい文書は表示されません。

何が足りないの?

171
Joe

あなたの例はMongoDB 1.6.3と1.7.3で私のために働きました。以下の例は1.7.3用です。古いバージョンのMongoDBを使用していますか?

$ cat > locations.csv
Name,Address,City,State,Zip
Jane Doe,123 Main St,Whereverville,CA,90210
John Doe,555 Broadway Ave,New York,NY,10010
 ctrl-d
$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline
connected to: 127.0.0.1
imported 3 objects
$ mongo
MongoDB Shell version: 1.7.3
connecting to: test
> use mydb
switched to db mydb
> db.things.find()
{ "_id" : ObjectId("4d32a36ed63d057130c08fca"), "Name" : "Jane Doe", "Address" : "123 Main St", "City" : "Whereverville", "State" : "CA", "Zip" : 90210 }
{ "_id" : ObjectId("4d32a36ed63d057130c08fcb"), "Name" : "John Doe", "Address" : "555 Broadway Ave", "City" : "New York", "State" : "NY", "Zip" : 10010 }
224
Robert Stewart

Mongoimportを実行してもエラーが表示されず、0件のレコードがインポートされたと報告されるという同様の問題に困惑しました。特に「Windows Comma Separated(.csv)」フォーマットを指定せずに、デフォルトの「名前を付けて保存」「xls as csv」を使用して、Mac 2011バージョン用のOSX Excelを使用して動作しないファイルを保存しました。このサイトを調べて、 "Windows Comma Separated(.csv)"フォーマットを使って "名前を付けてもう一度保存"を試みた後、mongoimportは各行に改行文字があると考えています。各行の終わりにある文字。

25
user2514493

次のコマンドを実行する必要があります。

mongoimport --Host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline

-dはデータベース名

-cはコレクション名です

--headerline --type csvまたは--type tsvを使用する場合、最初の行をフィールド名として使用します。それ以外の場合、mongoimportは最初の行を個別の文書としてインポートします。

詳細については、 mongoimport を参照してください。

13
d.danailov

実運用環境で作業している場合は、おそらく認証が必要になります。このようなものを使用して、適切な資格情報を使用して正しいデータベースに対して認証することができます。

mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --Host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
5
blueskin

ファイルの末尾に空白行があることを確認してください。そうしないと、mongoimportの一部のバージョンで最後の行が無視されます。

3
Maxence

私はこれをmongoimport Shellで使っています

mongoimport --db db_name --collection collection_name --type csv --file C:\\Your_file_path\target_file.csv --headerline

タイプはcsv/tsv/jsonを選択できますが、csv/tsvのみが--headerlineを使用できます

あなたは 公式の文書 でもっと読むことができます。

2
R-Ling Chou

最初にmongoシェルから出て、次のようにmongoimportコマンドを実行します。

Manojs-MacBook-Air:bin Aditya$ mongoimport -d marketdata -c minibars 
--type csv 
--headerline
--file '/Users/Aditya/Downloads/mstf.csv'

2017-05-13T20:00:41.989+0800    connected to: localhost
2017-05-13T20:00:44.123+0800    imported 97609 documents
Manojs-MacBook-Air:bin Aditya$
1
user8006819

Robert Stewartは、mongoimportでインポートする方法について既に回答しました。

私は T MongoChef ツール(3.2+バージョン)を使ってCSVをエレガントにインポートする簡単な方法を提案しています。将来誰かを助けるかもしれません。

  1. あなただけのコレクションを選択する必要があります
  2. インポートするファイルを選択
  3. インポートしようとしているデータの選択を解除することもできます。また多くのオプションがあります。
  4. コレクションをインポートしました

動画のインポート方法 を参照してください。

1
Somnath Muluk

Robert Stewartの答えは素晴らしいです。

また、 - columHaveTypesと--fieldsを使用してフィールドを入力することもできます。

mongoimport -d myDb -c myCollection --type csv --file myCsv.csv 
  --columnsHaveTypes --fields "label.string(),code.string(),aBoolean.boolean()"

(フィールドの間にカンマの後にスペースが入らないように注意してください)

他のタイプについては、こちらのドキュメントを参照してください。 https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes

1
Thomas Pierre

バージョン3.4の場合は、次の構文を使用してください。

mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline

3日後、私はついに自分でそれを作りました。私をサポートしてくれたすべてのユーザーに感謝します。

1
Sreshta Tric

--uriフラグに言及している人はいませんが、不思議です。

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 
0
Alex Ershov

mongoimport -dテスト-cテスト - タイプcsv - ファイルSampleCSVFile_119kb.csv --headerline

収集データを確認します。 -

var collections = db.getCollectionNames();

for(var i = 0; i< collections.length; i++)
{    
   print('Collection: ' + collections[i]);
   // print the name of each collection
   
   db.getCollection(collections[i]).find().forEach(printjson);
   
   //and then print the json of each of its elements
}
0
arnav

私の要求は、.csv (with no headline)をリモートのMongoDBインスタンスにインポートすることでした。 mongoimport v3.0.7belowコマンドは私のために働きました:

mongoimport -h <Host>:<port> -u <db-user> -p <db-password>  -d <database-name> -c <collection-name> --file <csv file location> --fields <name of the columns(comma seperated) in csv> --type csv

例えば:

mongoimport -h 1234.mlab.com:61486 -u arpitaggarwal -p password  -d my-database -c employees --file employees.csv --fields name,email --type csv

以下はインポート後の外観のスクリーンショットです。

enter image description here

nameemailは、.csvファイルの列です。

0
Arpit

私が持っている.csvファイルがあるとすると、ヘッダーなしの列が1つだけで、以下のコマンドが機能しました:

mongoimport -h <mongodb-Host>:<mongodb-port> -u <username> -p <password> -d <mongodb-database-name> -c <collection-name> --file file.csv --fields <field-name> --type csv

ここで、フィールド名はヘッダー名を指します.csvファイルの列の。

0
Arpit

C:\ wamp\mongodb\bin> mongoexport --db proj_mmm - コレクションオファリング--csv --fieldFile offerings_fields.txt --out offerings.csv

0
Bhaskar

つかいます :

mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv
0
Tavleen

将来の読者と共有する:

今回のケースでは、Hostパラメータを追加して機能させる必要があります

mongoimport -h mongodb://someMongoDBhostUrl:somePORTrunningMongoDB/someDB -d someDB -c someCollection -u someUserName -p somePassword --file someCSVFile.csv --type csv --headerline --Host=127.0.0.1
0
student
1]We can save xsl as .csv file
2] Got to MongoDB bin pathon cmd - > cd D:\Arkay\soft\MongoDB\bin
3] Run below command
> mongoimport.exe -d dbname -c collectionname --type csv --file "D:\Arkay\test.csv" --headerline
4] Verify on Mongo side using below coomand.
>db.collectioname.find().pretty().limit(1)
0
Dinesh Shinkar

Mongoimportを実行した後にこれを使用してください

インポートされたオブジェクトの数を返します

use db
db.collectionname.find().count()

オブジェクトの数を返します。

0
HarishThangavel