連絡先情報を含む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()
を実行しても新しい文書は表示されません。
何が足りないの?
あなたの例は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 }
Mongoimportを実行してもエラーが表示されず、0件のレコードがインポートされたと報告されるという同様の問題に困惑しました。特に「Windows Comma Separated(.csv)」フォーマットを指定せずに、デフォルトの「名前を付けて保存」「xls as csv」を使用して、Mac 2011バージョン用のOSX Excelを使用して動作しないファイルを保存しました。このサイトを調べて、 "Windows Comma Separated(.csv)"フォーマットを使って "名前を付けてもう一度保存"を試みた後、mongoimportは各行に改行文字があると考えています。各行の終わりにある文字。
次のコマンドを実行する必要があります。
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 を参照してください。
実運用環境で作業している場合は、おそらく認証が必要になります。このようなものを使用して、適切な資格情報を使用して正しいデータベースに対して認証することができます。
mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --Host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
ファイルの末尾に空白行があることを確認してください。そうしないと、mongoimportの一部のバージョンで最後の行が無視されます。
私はこれを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
を使用できます
あなたは 公式の文書 でもっと読むことができます。
最初に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$
Robert Stewartは、mongoimportでインポートする方法について既に回答しました。
私は T MongoChef ツール(3.2+バージョン)を使ってCSVをエレガントにインポートする簡単な方法を提案しています。将来誰かを助けるかもしれません。
動画のインポート方法 を参照してください。
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
バージョン3.4の場合は、次の構文を使用してください。
mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline
3日後、私はついに自分でそれを作りました。私をサポートしてくれたすべてのユーザーに感謝します。
--uri
フラグに言及している人はいませんが、不思議です。
mongoimport --uri connectionString -c questions --type csv --file questions.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
}
私の要求は、.csv (with no headline)
をリモートのMongoDB
インスタンスにインポートすることでした。 mongoimport v3.0.7
belowコマンドは私のために働きました:
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
以下はインポート後の外観のスクリーンショットです。
name
とemail
は、.csv
ファイルの列です。
私が持っている.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
ファイルの列の。
C:\ wamp\mongodb\bin> mongoexport --db proj_mmm - コレクションオファリング--csv --fieldFile offerings_fields.txt --out offerings.csv
つかいます :
mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv
将来の読者と共有する:
今回のケースでは、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
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)
Mongoimportを実行した後にこれを使用してください
インポートされたオブジェクトの数を返します
use db
db.collectionname.find().count()
オブジェクトの数を返します。